Problem 3
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最大的質因數是多少?
題目解答
樸素解法:暴力枚舉(枚舉所有因子並判斷是否爲素數即可)
優化算法:
在這裏我們可以利用 算術基本定理 來解決這個問題。
算術基本定理:任何一個大於1的自然數 N,如果N不爲質數,那麼N可以唯一分解成有限個質數的乘積。
遇到的素數不斷分解即可,直到分解到1時退出,我們的數字是從小到大遍歷的,所以最後分解到一時的素因子一定時最大的。
題目代碼
#include <stdio.h>
#include <inttypes.h>
#define N 600851475143
int main(){
int32_t ans;
int64_t temp = N;
for (int32_t i=2;;i++){
if (temp % i == 0){
while (temp % i == 0){
temp /= i;
}
ans = i;
if(temp == 1){
break;
}
}
}
printf("%" PRId32 "\n",ans);
}