문제 : 1부터 n까지의 자연수를 차례로 더하여 구해진 값을 삼각수라고 합니다.
예를 들어 7번째 삼각수는 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28이 됩니다.
이런 식으로 삼각수를 구해 나가면 다음과 같습니다.
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
이 삼각수들의 약수를 구해봅시다.
1: 1
3: 1, 3
6: 1, 2, 3, 6
10: 1, 2, 5, 10
15: 1, 3, 5, 15
21: 1, 3, 7, 21
28: 1, 2, 4, 7, 14, 28
위에서 보듯이, 5개 이상의 약수를 갖는 첫번째 삼각수는 28입니다.
그러면 500개 이상의 약수를 갖는 가장 작은 삼각수는 얼마입니까?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <stdio.h> int main() { long long tri = 0; int cnt = 0; int j; int i; for(i = 1; 1; i++){ tri += i; int triCnt = 0; for(j =1; j<=tri; j++){ if(tri % j==0){ triCnt +=1; } } printf("triCnt : %d\n", triCnt); if(triCnt >=500){ printf("%d", tri); return 0; } } return 0; } | cs |
triCnt : 16
triCnt : 32
triCnt : 16
triCnt : 8
triCnt : 96
triCnt : 576
76576500
'* Computer Science > Project Euler' 카테고리의 다른 글
project euler 14. problem (0) | 2016.07.24 |
---|---|
project euler 13. problem (0) | 2016.07.23 |
project euler 11. problem (0) | 2016.07.21 |
project euler 10. problem (0) | 2016.07.20 |
project euler 9. problem (0) | 2016.07.19 |