반응형
문제
어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다.
예를 들면 13195의 소인수는 5, 7, 13, 29 입니다.
600851475143의 소인수 중에서 가장 큰 수를 구하세요.
접근방법
1. 1부터 차례로 증가시키며 계산하되,
2. 해당 숫자로 나눠지면 계속 나누고, 안 나눠지면 그 때 증가시킨다.
3. 마지막으로 나누었을 때 1이 되도록 하는 값이 우리가 구하고자 하는 값이다.
#include <iostream>
using namespace std;
int main()
{
__int64 num = 600851475143;
int i = 2;
while (num != 1)
{
if (num % i == 0)
{
num /= i;
//cout << i << "\t" << num << endl;
}
else
i++;
}
cout << "Answer is : " << i << endl;
return 0;
}
참고
반응형
'알고리즘 문제 & 프로그래밍 > C++' 카테고리의 다른 글
[C++]프로젝트 오일러 5번 문제&풀이 (1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수) (0) | 2020.11.19 |
---|---|
[C++]프로젝트 오일러 4번 문제&풀이 (세자리 수를 곱해 만들 수 있는 가장 큰 대칭수) (0) | 2020.11.18 |
[C++]프로젝트 오일러 2번 문제&풀이 (피보나치 수열에서 4백만 이하이면서 짝수인 항의 합) (0) | 2020.11.17 |
[C++]프로젝트 오일러 1번 문제&풀이 (1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면?) (0) | 2020.11.17 |
[C++]프로젝트 오일러 7번 문제&풀이 (10001번째의 소수) (0) | 2020.11.16 |
댓글