创建一个程序,生成具有行和列的素数表

问题描述 投票:0回答:1

我正在尝试创建一个生成素数表的程序。该范围必须在程序内部设置,而不是在用户输入中设置。每行和每列的素数也必须在程序中设置。我必须有一个名为 isPrime() 的函数,它接受素数并为素数返回 true,为非素数返回 false。我还需要范围的高端和低端以及输出表中每行的素数数量的常量。

我尝试从一个函数开始,为素数和非素数返回 true 和 false。然后我尝试设置决赛桌主要输出的基础知识。我期望它输出该范围内的素数,但由于某种原因,它只输出“从 100 到 900 的素数表是:而不是素数。我也不确定从哪里开始将输出格式化为包含行和列的表格。我不明白我错过了什么,因为它不返回输出。

这是我到目前为止的代码:

def isPrime(n):
    if(n<2):
        return 'False'
    for i in range(2,n//2+1):
        if(n%i==0):
            return 'False'
    return 'True'

lower = 100
upper = 900

print("Table of prime numbers from", lower, "to", upper, "is:")

for num in range(lower, upper +1):
    if num > 1:
        for i in range (2, num):
            if (num%1) == 0:
                break
        else:
            print(num)

我是一名初学者,正在努力提高我的 Python 技能。

python function constants primes
1个回答
0
投票

”...出于某种原因,它只输出“从 100 到 900 的素数表是:而不是素数。 ...”

始终满足内部 for 循环条件语句。

for i in range (2, num):

因此,else语句永远不会被执行。

else: print(num)

“...我也不确定从哪里开始将输出格式化为包含行和列的表格。...”

一种方法是使用基本的字符串格式

def prime(x):
    if x < 2: return False
    for i in range(2, x):
        if not x % i: return False
    else: return True

x, y, z = 100, 900, 10

a = 0
for i in range(x, y + 1):
    if prime(i):
        print(f'{i:<5}', end='')
        a += 1
        if not a % z: print()

输出

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  283  293  307  311  313  
317  331  337  347  349  353  359  367  373  379  
383  389  397  401  409  419  421  431  433  439  
443  449  457  461  463  467  479  487  491  499  
503  509  521  523  541  547  557  563  569  571  
577  587  593  599  601  607  613  617  619  631  
641  643  647  653  659  661  673  677  683  691  
701  709  719  727  733  739  743  751  757  761  
769  773  787  797  809  811  821  823  827  829  
839  853  857  859  863  877  881  883  887  
© www.soinside.com 2019 - 2024. All rights reserved.