Problem 3 : Largest prime factor


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);
}

                

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章