
正确答案应该是输入100输出1060,但是这个输入100,输出1请问代码哪里错了
关注简单看了下有个逻辑错误:
当 i%j==0 时,你返回了 False,意味着 i 不是素数。但是,你的循环是从 j=1 开始的,对于所有的 i,i%1 都等于 0,因此你的函数对于所有的 i 都返回 False。
有个代码做参考:
def is_prime(n):
if n <= 1:
return False
if n == 2:
return True
if n % 2 == 0:
return False
max_divisor = int(n ** 0.5) + 1
for d in range(3, max_divisor, 2):
if n % d == 0:
return False
return True
sum_of_primes = 0
n = int(input())
for i in range(1, n):
if is_prime(i):
sum_of_primes += i
print(sum_of_primes)
如果有帮助,请点击一下采纳该答案~谢谢