조띵의지극히개인적인공간

그냥 시간날때마다 한문제씩 풀어보고자 한다.



오일러 프로젝트 1번.

10 미만의 자연수 중 3과 5의 배수를 나열하면 3, 5, 6, 9가 있습니다. 이 배수의 합은 23입니다.

1000 미만의 자연수 중 3과 5의 배수를 모두 더한 값은 얼마인가요?



내맘대로 해설:

for문을 1000번 돌리고 3혹은 5로 나누어 떨어지는 수의 합을 계산해도 되지만 그럼 1000번의 루프동안 2번의 나머지 계산을 해야한다. 총 2000번 나머지 계산.

이를 개선하기 위해 3배수로 합을 구하고, 5배수로 합을 구하고 그리고 최소공배수인 15의 합을 빼는방법으로 총 600번정도의 루프의 계산식으로만 결과를 얻어냈다.


#include <stdio.h>


int _tmain(int argc, _TCHAR* argv[])

{

int Count = 1000;

int Sum = 0;

for (int i=5; i<Count; i+=5) Sum+=i;

for (int i=3; i<Count; i+=3) Sum+=i;

for (int i=15; i<Count; i+=15) Sum-=i;


printf("Sum=%d", Sum);


return 0;

}






출처 : http://euler.toepeu.net/





Posted by 조띵


티스토리 툴바