Python 以最少的行数和列数打印列表
查找素数的代码:Python 以最少的行数和列数打印列表,python,function,primes,Python,Function,Primes,查找素数的代码: 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.ap
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))
它引用findTwinPrimes函数,但不调用它,因为末尾没有括号
如果要调用该函数,则需要括号:
twinPrimes = findTwinPrimes(some_argument_here)
您需要重构代码以查找孪生数字,如下所示 此方法返回双素数元组列表,即
[(3,5)、(5,7),…]
def findTwinPrimes(n):
prime = [True for i in range(n + 2)]
p = 2
twin_primes = []
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]:
twin_primes.append((p, (p + 2)))
print("(", p, ",", (p + 2), ")", end='')
return twin_primes # this returns twin_primes as list of tuples i.e [(3,5),(5,7), ...]
twinPrimes=findTwinPrimes它也给了我一个错误,func不可编辑,我从来没见过这个,明白了,我必须输入4027作为参数,现在,它仍然没有以一种整洁的方式打印它们,所有的括号在哪里排列,就像它打印出来的方式一样,只是为了好玩,有没有一种方法可以让数字以最少的列打印出来?或者决定需要多少列而不是行?
twinPrimes = findTwinPrimes(some_argument_here)
def findTwinPrimes(n):
prime = [True for i in range(n + 2)]
p = 2
twin_primes = []
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]:
twin_primes.append((p, (p + 2)))
print("(", p, ",", (p + 2), ")", end='')
return twin_primes # this returns twin_primes as list of tuples i.e [(3,5),(5,7), ...]
def displayTwinPrimes(number, rows = 52):
table_list = [[] for _ in range(rows)]
twinPrimes = findTwinPrimes(number)
for index, item in enumerate(twinPrimes):
row_index = index % rows
table_list[row_index].append(item)
table_str = "\n".join(["\t".join(["(%6d, %6d)" % (p[0],p[1]) for p in i]) for i in table_list])
return table_str