一个关于python求素数代码的问题

一个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("非素数")




img

你在循环的时候,只要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
...