* Computer Science/Project Euler

project euler 12. problem

soicem 2016. 7. 22. 13:51

문제 : 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 = 11; 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