python素数错误
这个问题问的是1-25之间的素数,这是我的代码,结果是错的。有人能帮我吗???非常感谢强>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
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