반응형

문제
영문
Largest prime factor
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
한글
어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다. 예를 들면 13195의 소인수는 5, 7, 13, 29 입니다.
600851475143의 소인수 중에서 가장 큰 수를 구하세요.
해설
파이썬 (Python)
a = 600851475143 i = 2 while i <= 775147: #루트 n if a%i == 0: if a == i: break while a%i == 0: a = a//i i += 1 print(i)
위 코드는 다음과 같은 알고리즘으로 동작합니다.
- a는 문제에서 주어진 수, i는 2로 설정한다
- 만약 a가 i로 나누어진다면, 나누어지지 않을 때까지 a를 i로 나눈 값을 a로 넣는다
- a가 i로 나누어지지 않는다면, i를 1 증가시킨다
- 이를 반복하여 a가 i가 되는 경우가 가장 큰 소인수이다!
작은 소인수들로 계속 나누어 없애다 보면 마지막에 남아있는 소인수가 가장 큰 소인수일 것이라는 원리입니다! 반복문의 조건은 무한 루프에 빠지지 않도록 설정해둔 것 입니다.
C
#include<stdio.h> int main(void) { long long a = 600851475143; int i = 2; while(i<= 775147){ //루트 n if (a%i == 0) { if (a / i == 1){ break; } a = a/i; printf("%d : %lld\n", i, a); } i++; } printf("%lld", a); }
제가 처음에 짰던 코드입니다. 이 코드에는 a 숫자가 바뀔 경우 문제 될 수 있는 부분이 한 가지 있는데, 한번 찾아보세요!
정답
6857
반응형
'🖥️ 문제 풀이 > 프로젝트 오일러' 카테고리의 다른 글
[프로젝트 오일러] 문제6 - 합 제곱 차 (0) | 2022.09.09 |
---|---|
[프로젝트 오일러] 문제5 - 최소공배수 (0) | 2022.09.09 |
[프로젝트 오일러] 문제4 - 가장 큰 대칭수 (0) | 2022.09.09 |
[프로젝트 오일러] 문제2 - 짝수 피보나치 숫자들 (0) | 2022.09.09 |
[프로젝트 오일러] 문제1 - 3과 5의 배수 (0) | 2022.09.08 |
댓글