Python显示从1到100的所有素数

2024-04-27 14:24:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用布尔函数打印从1到100的所有素数。

下面是我正在工作的代码。

for n in range(1,101):
status = True
if n < 2:
    status = False
else:
    for i in range(2,n):
        if n % i == 0:
            status = False

    if status:
        print(n, '', sep=',', end='')

但当我将代码放入函数并运行模块时,shell上没有任何打印内容。 我做错了什么?

is_prime():
    for n in range(1,101):
        status = True
        if n < 2:
            status = False
        else:
            for i in range(2,n):
                if n % i == 0:
                    status = False
        return status

if is_prime():    
    print(n, '', sep=',', end='')

下面是程序的输出。 如何防止最后一个逗号打印?
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,


Tags: 函数代码infalsetrueforifis
3条回答

我认为您最好的解决方案是附加一个数组,它修复了逗号问题,并且更快/更优化。如果需要的话,你可以去掉这些值,把它们存储到文件中。祝你好运!

def get_primes(start, end):
    out = list()
    if start <= 1:
        start = 2

    sieve = [True] * (end + 1)
    for p in range(start, end + 1):
        if (sieve[p]):
            out.append(p)
            for i in range(p, end + 1, p):
                sieve[i] = False
    return out

print(get_primes(1, 100))

输出:

[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]

请参阅我对堆栈溢出#11619942“print series of prime numbers in python”的评论和其他内容

它完成了同样的任务,但却要求用户输入:

num1 = input("Input a number: ")
num2 = input("Input another number: ")


for x in range(num1,num2):
    prime = True
    for i in range(2,x):
        if (x%i==0):
            prime = False
    if prime == True:
       print x

print "Done......"

如果你只想解出你输入的数字,那就把这个部分去掉:

num1 = input("Input a number: ")
num2 = input("Input another number: ")

并将范围从num1、num2改为1和100,例如:

for x in range(1,100):

试试这个

def is_prime(n):
    status = True
    if n < 2:
        status = False
    else:
        for i in range(2,n):
            if n % i == 0:
                status = False
    return status

for n in range(1,101):
    if is_prime(n):
        if n==97:
            print n
        else:
            print n,",",

output
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

相关问题 更多 >