一个python求素数的代码,代码可以运行,输入其他的数字都是正确回答,但是输入9这个数字后就是错误的回答。检查了代码也没发现什么问题。希望有朋友能帮我看看!
def sushu(n):
for i in range(2,n):
if n%i == 0:
return 0
else:
return 1
from math import*
n = int(input())
if sushu(n) == 1:
print("素数")
else:
print("非素数")
你在循环的时候,只要n除以2不是0就直接返回是素数了
你确定只有9有问题,99没问题?33没问题?只要是奇数你都认为是素数,因为循环永远走不完,第一次就直接return
修改如下:
def sushu(n):
for i in range(2,n):
if n%i == 0:
return 0
else:
return 1
from math import*
n = int(input())
if sushu(n) == 1:
print("素数")
else:
print("非素数")
不是只要判一遍,你的代码不管怎样都是第一次就退出了,改成这样吧
从2判到n的根号就好了,后面都没有质因数
def sushu(n):
i = 2
while i * i <= n:
if n % i != 0:
return 0 # 有因数,直接返回0
return 1 # 一直没有,返回1
...