python素数错误

python素数错误,python,Python,这个问题问的是1-25之间的素数,这是我的代码,结果是错的。有人能帮我吗???非常感谢 n=1 f=0 while n<=25: for i in range(2,n): if n%i==0: f+=1 else: f if f==0: print str(n) + "is a prime number" else: print str(n) + "is

这个问题问的是1-25之间的素数,这是我的代码,结果是错的。有人能帮我吗???非常感谢

n=1
f=0
while n<=25:
    for i in range(2,n):
        if n%i==0:
            f+=1
        else:
            f
    if f==0:
        print str(n) + "is a prime number"
    else:
        print str(n) + "is not a prime number"
    n+=1
n=1
f=0

当n时,您没有重新设置
f
的值,因此一旦您碰到一个非素数,后面的所有数字都将被报告为非素数

n=1
f=0
while n<=25:
    for i in range(2,n):
        if n%i==0:
            f+=1
        else:
            f
    if f==0:
        print str(n) + "is a prime number"
    else:
        print str(n) + "is not a prime number"
    f = 0
    n+=1
n=1
f=0

而n我已经对您的代码进行了重新安排,使其更加高效。它首先测试
n
是否为偶数,然后测试奇数因子直到
n
的平方根,因为如果
n
不是素数,它必须有一个因子,你可以去掉它,否则:f
,它没有任何用处。顺便说一句,这是一个非常低效的方法来测试素数。你应该从
n=2
开始,因为1既不是素数也不是复合数:它是一个单位。@PM2Ring那么什么样的方法是测试素数的有效方法?你能举个例子吗???谢谢这里有各种各样的快速方法:,但是在这个阶段,它们可能对您来说有点太高级了。制作从2开始的素数列表的标准方法称为。看看您是否能找到一种用Python进行筛选的方法。
def prime_test(n):
    if n % 2 == 0:
        return False
    for i in range(3, int(n**0.5 + 1), 2):
        if n % i == 0:
            return False
    return True

print 2, "is a prime number"

for n in range(3, 26):
    if prime_test(n):
        print n, "is a prime number"
    else:
        print n, "is not a prime number"
2 is a prime number
3 is a prime number
4 is not a prime number
5 is a prime number
6 is not a prime number
7 is a prime number
8 is not a prime number
9 is not a prime number
10 is not a prime number
11 is a prime number
12 is not a prime number
13 is a prime number
14 is not a prime number
15 is not a prime number
16 is not a prime number
17 is a prime number
18 is not a prime number
19 is a prime number
20 is not a prime number
21 is not a prime number
22 is not a prime number
23 is a prime number
24 is not a prime number
25 is not a prime number