1. 程式人生 > 其它 >尤拉計劃003--最大質因數

尤拉計劃003--最大質因數

尤拉計劃003--最大質因數

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\)的最大質因數是多少?

在這道題目中,我用的方法是列舉來解題。首先編寫一個判斷是否素數的函式。例如如果isPrime(i)==true,意味著i

為素數,同時n%i==0,意味著in的因數。所以我們就確定了其中一個質因數i,同時我們需要更新n=n/i,繼續執行下面的操作。最後求解出來的結果為6857。

#include <iostream>
using namespace std;
bool isPrime(long long);

int main(){
    long long n = 600851475143;
    int A[20];
    int count = 0;
    for (long long i=2;i<n;i++){
        if (n%i==0&&isPrime(i)){
            A[count]=i;
            count++;
            n = n/i;
        }
    }
    A[count++]=n;
    cout<<"\n最大的數是"<<A[count-1]<<endl;
    return 0;
}

bool isPrime(long long n){
    for(int i=2;i<n;i++){
        if(n%i==0)
            return false;
    }
    return true;
}