我在尝试找出从哪里开始生成look like this的表时遇到问题:
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199 211 223 227 229
到目前为止,这是我的代码,它解决了前1000个素数,但我不确定如何进入10x100表。
代码:
def is_prime(number):
for i in range(2,number):
if ((number % i) == 0):
return False
return True
def main():
for value in range(2, 7920):
if ( is_prime(value) ):
print(value, end='\t')
main()
答案 0 :(得分:5)
只需跟踪您在当前行上打印的数量。
def main():
count = 0
for value in range(2, 7920):
if (is_prime(value)):
print(value, end='\t')
count += 1
if count % 10 == 0:
print()
答案 1 :(得分:2)
最简单的方法是累积列表中的每一行。每当列表达到十个元素时,以格式良好的方式显示该行:
def is_prime(number):
for i in range(2,number):
if ((number % i) == 0):
return False
return True
def display_row(row):
print(''.join(format(value, '7d') for value in row))
def main():
row = []
for value in range(2, 7920):
if ( is_prime(value) ):
row.append(value)
if len(row) == 10:
display_row(row)
row = []
display_row(row)
main()
display_row()的逻辑表示取每个值并将其格式化为十进制,必要时填充空格以填充7个空格,然后将它们连接在一个字符串中。
答案 2 :(得分:0)
我会略微区别并生成素数,一次收集10个并打印,例如:
def is_prime(number):
for i in range(2,number):
if ((number % i) == 0):
return False
return True
def primegen():
for value in range(2, 7920):
if ( is_prime(value) ):
yield value
def main():
primes = primegen()
for _ in range(100):
print(''.join(format(p, '7') for _, p in zip(range(10), primes)))
main()
输出:
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199 211 223 227 229
233 239 241 251 257 263 269 271 277 281
...