【发布时间】:2019-07-21 22:43:02
【问题描述】:
求素数的代码:
def findPrimes(n):
prime_list = list()
for number in range(1, n + 1):
prime = True
for i in range(2, number):
if(number % i == 0):
prime = False
if prime:
prime_list.append(number)
return prime_list
整齐地制作素数列表的代码:
def displayPrimes(number, rows = 50):
table_list = [[] for _ in range(rows)]
primes = findPrimes(number)
for index, item in enumerate(primes):
row_index = index % rows
table_list[row_index].append("%6d" % item)
table_str = "\n".join(["\t".join(i) for i in table_list])
return table_str
print(displayPrimes(4027))
寻找孪生素数的代码:
def findTwinPrimes(n):
prime = [True for i in range(n + 2)]
p = 2
while (p * p <= n + 1):
# If prime[p] is not changed,
# then it is a prime
if (prime[p] == True):
# Update all multiples of p
for i in range(p * 2, n + 2, p):
prime[i] = False
p += 1
# check twin prime numbers
# display the twin prime numbers
for p in range(2, n-1):
if prime[p] and prime[p + 2]:
print("(",p,",", (p + 2), ")" ,end='')
print(findTwinPrimes(4027))
使孪生素数显示整齐的代码。 问题是它说:
TypeError: 'function' 对象不可迭代
因为我在用于显示素数的代码中有相同的数据,所以这不起作用,它只是整齐地显示列表吗?
def displayTwinPrimes(number, rows = 52):
table_list = [[] for _ in range(rows)]
twinPrimes = findTwinPrimes
for index, item in enumerate(twinPrimes):
row_index = index % rows
table_list[row_index].append("%6d" % item)
table_str = "\n".join(["\t".join(i) for i in table_list])
return table_str
print(displayTwinPrimes(4027))
【问题讨论】:
-
twinPrimes = findTwinPrimes -
它也给了我一个错误,即 func isnt iterable ive never seen this