개발/문제풀이
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; } |
'개발 > 문제풀이' 카테고리의 다른 글
Code. 프로젝트 오일러. KR 14번. C++ (0) | 2016.10.09 |
---|---|
Code. 프로젝트 오일러. KR 13번. C++ (0) | 2016.10.09 |
Code. 프로젝트 오일러. KR 11번. C++ (0) | 2016.10.01 |
Code. 프로젝트 오일러. KR 10번. C++ (0) | 2016.10.01 |
Code. 프로젝트 오일러. KR 9번. C++ (0) | 2016.09.28 |
댓글