第三题:寻找一个合数的最大质因数
对一个数(非质数)进行因数分解,比如13195=5x7x13x29。最大的质因数是29.
那么 600851475143 怎么分解呢?最大的质因数又是多少?
#include <iostream>
#include <list>
#include <math.h>
using namespace std;
int main(){
double n = 600851475143;
list<double> primes;
for(int i=2; i<sqrt(n); i++){
primes.push_back(i);
}
while (n > 1.0){
double prime = primes.front();
if(fmod(n,prime) == 0){
cout << prime << "\n";
n = n/prime;
}
list<double>::iterator it;
primes.erase(primes.begin());
for(it=primes.begin(); it!=primes.end(); it++){
if(fmod(*it, prime) == 0){
it = primes.erase(it);
}
}
}
return 0;
}