from math import sqrt def prime(begin,end): for i in range(begin,end+1): # if i==2: # print(i) for j in range(2,int(sqrt(i))+1): if i % j == 0: break; print(i) prime(1,100)这是一段求素数的代码,为什么他的结果不对
时间: 2024-02-14 17:06:15 浏览: 71
这段代码的问题在于,它在判断一个数是否为素数时,只有在遍历完所有可能的因子,才会判定该数为素数并输出。这样会导致在判断非素数时也会输出该数,从而导致结果不正确。
解决方法是,在判断非素数时,直接跳出内层循环,不需要再输出该数。
修改后的代码如下:
```
from math import sqrt
def prime(begin,end):
for i in range(begin,end+1):
is_prime = True
for j in range(2,int(sqrt(i))+1):
if i % j == 0:
is_prime = False
break
if is_prime:
print(i)
prime(1,100)
```
这样就可以正确地输出1到100之间的素数了。
阅读全文