只是澄清一下:) 这是我的previous question的第2部分。我发布了一个新问题,因为前一个问题有点混乱,并且由于我是Stack的新手,所以我仍在学习这里的工作方式。
实施建议后,我之前的代码开始工作,但是开始出现“超过时间限制”的问题。我已尽力减少代码,但TLE仍在发生。这是我的新代码:
from math import sqrt
test = int(input())
for i in range(test):
summ = 0
maxx = int(input())
if maxx==1:
summ = 0
elif maxx==2:
summ += 2
else:
summ = summ + 2
for x in range(3,maxx+1,2):
half = int(sqrt(x)) + 1
for y in range(3,half,2):
if x%y==0:
break
else:
summ = summ + x
print(summ)
答案 0 :(得分:1)
嵌套循环太多,会增加时间复杂度。
这是一个简单的函数,占用的时间更少。
import time
def sum_of_prime(n):
prime =[]
for num in range(2,int(n)):
if all(num%i!=0 for i in range(2,num)):
prime.append(num)
return sum(prime[0:len(prime)])
n = input("Enter value of n:")
start = time.clock()
print(sum_of_prime(n))
print (time.clock() - start)