You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手求助:如何用Python计算指定范围内的质数之和?代码结果异常

你的代码其实是正确的!

首先纠正一个小误解:到50的质数之和本来就是328,你说的326是错误结果——问题出在你对质数的计算或定义理解上,不是代码的问题。

为什么代码逻辑没问题?

质数的定义是:大于1的自然数,除了1和它本身之外没有其他因数。2是唯一的偶质数,完全符合这个定义,必须被计入总和。

你的代码逻辑是对的:

  • 外层循环从2开始遍历到50的每个数
  • 内层循环检查当前数能不能被2到它自身减1的数整除,要是能整除就跳出循环(说明不是质数)
  • 要是内层循环从头到尾没找到能整除的数(没触发break),就执行else分支,把这个质数加到总和里

当num=2时,内层循环range(2,2)是空的,循环直接结束,所以会执行else分支把2加进去——这完全正确,因为2是质数。

手动验证总和

把50以内的所有质数列出来相加:
2+3+5+7+11+13+17+19+23+29+31+37+41+43+47 = 328

如果你确实要得到326(不推荐,不符合质数定义)

要是你误把2排除在质数外,想得到326,可以修改外层循环从3开始,只遍历奇数:

upto = int(input("Find sum of prime numbers upto : "))

sum = 0

# 从3开始,步长为2,只遍历奇数
for num in range(3, upto + 1, 2):
    for i in range(2, num):
        if (num % i == 0):
            break
    else:
        sum += num

print("Sum of all prime numbers upto", upto, ":", sum)

输入50的话,这个代码会输出326,但这是错误的质数和,因为漏掉了合法质数2。

内容的提问来源于stack exchange,提问作者Sumit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 20:35:30