生成数字表

时间:2017-03-27 02:21:14

标签: python python-3.x

我在尝试找出从哪里开始生成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()

3 个答案:

答案 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
...