【发布时间】:2018-12-27 03:58:27
【问题描述】:
我是编程新手。在尝试解决此问题时,我得到了错误的答案。我多次检查我的代码,但无法找出错误。请帮我解决这个简单的问题。问题如下:
给定一个正整数N,计算1和N(含)之间所有素数的和。输入的第一行包含一个整数T,表示测试用例的数量。 T 测试用例如下。每个测试用例包含一行包含 N 的输入。对于每个测试用例,在新行中打印 1 和 N 之间所有素数的总和。
我的代码是:
from math import sqrt
sum = 0
test = int(input())
for i in range(test):
max = int(input())
if max==1:
sum = 0
elif max==2:
sum += 2
else:
sum = sum + 2
for x in range(3,max+1):
half = int(sqrt(max)) + 1
for y in range(2,half):
res = x%y
if res==0:
sum = sum + x
break
print(sum)
对于输入 5 和 10,我的代码分别给出输出 6 和 48,而正确答案分别是 10 和 17。请找出我的代码中的错误。
【问题讨论】:
-
谢谢,@AndersonGreen。但是,我想知道我的代码中的错误。
-
查看sieve的这个实现
标签: python python-3.x