개발/문제풀이

Code. 프로젝트 오일러. KR 12번. C++

ordi2016. 10. 3. 20:12

소스코드가... 클래스 연습겸 만들다보니 길어졌습니다...



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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <iostream>
#include <vector>
using namespace std;
 
class Factor {
private:
    int num;
    int cnt;
     
public:
    Factor(int n = 1) {
        num = n;
        cnt = 1;
    };
    void addCnt() {
        cnt++;
    };
    int getCnt() {
        return cnt; 
    };
};
 
typedef vector<Factor> FactVector;
 
class PrimeDivisor {
private :
    int targetNum;
    int numOfFactor;
    FactVector v_pFactor;
     
    void FindFactor() {
        int temp = targetNum;
         
        for (int i = 2; temp > 1; i++)
        {
            if (temp % i == 0)
            {
                temp /= i;
                v_pFactor.push_back( Factor(i) );
                int index = v_pFactor.size() - 1;
                 
                while (temp % i == 0) {
                    temp /= i;
                    v_pFactor[index].addCnt();
                }
            }
        }
         
        numOfFactor = 1;
        int limit = v_pFactor.size();
         
        for (int i = 0; i < limit; i++) {
            numOfFactor *= v_pFactor[i].getCnt() + 1;
        }
 
    };
     
public :
    PrimeDivisor(int target) {
        targetNum = target;
        FindFactor();
    };
     
    int getTheNumOfFactor() {
        return numOfFactor;
    };
};
 
int main()
{
    int i = 1;
    int sum = 1;
     
    while (true)
    {
        i++;
        sum += i;
        PrimeDivisor pd(sum);
         
        cout << sum << "\t" << pd.getTheNumOfFactor() << endl;
         
        if (pd.getTheNumOfFactor() >= 500)
            break;
         
    }
     
    return 0;
}

댓글

Pmon

뭐든 간에 기록하자

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘

Lately Post

Lately Comment

VISITED

Today :

Total :