被困在素数上

2024-04-25 07:17:51 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的这段代码中,我不确定出了什么问题。 这似乎适合于计算素数 但当我尝试99号时,它显示它是一个基本的否

num=int(input('Enter a positive no.\n'))
prime=False
if num==1:
    prime=False
elif num==2:
    prime=True
else:
    for i in range(2,num):
        if num%2==0:
            prime=False
        else:
            prime=True

if prime:
    print('Prime no.')
else:
    print('Not a prime')

Tags: no代码falsetrueinputifelseprime
1条回答
网友
1楼 · 发布于 2024-04-25 07:17:51

你在写:

if num%2==0:
    prime=False

这使您检查数字是否为偶数,因为您只检查2的整除性。你应该做的是:

if num%i==0:
    prime=False
    break

这样,您就可以检查这个数字是否还有其他因素。此外,break语句在发现一个因子后立即将您从循环中分离出来。这样,在99的情况下,逻辑发现9是因子,因此99不是素数后,循环立即停止。否则,循环将一直运行到98,当它看到99%98不是零时,它将覆盖标志值,您仍然可以看到99是素数

附言:为了使代码更快,您可能还希望将range(2,(num/2)+1)而不是range(2,num)

相关问题 更多 >

    热门问题