가장 나이브한 방법은 1부터 999까지 하나씩 3이나 5의 배수인지 체크하면서 더하는 것입니다.
sm = 0
for i in range(1,1000):
if i % 3 == 0 or i % 5 == 0:
sm += i
print sm
1000미만의 3의 배수를 모두 더하면, 3+6+9+...+999 = 3*(1+2+...+333) = 3*333*334/2 을 이용해서 다음과 같이 계산할 수도 있습니다.
def sm1000(n):
m = 999/n
return n*m*(m+1)/2
print sm1000(3)+sm1000(5)-sm1000(15)
제 개발환경에서 첫번째 코드는 대략 4/10,000초, 두번째 코드는 4/100,000초가 걸립니다.
-끝-
No comments:
Post a Comment