int main(int argc, char* argv[]) { std::list<long> primes; primes.emplace_back(2); long maxp = 2; while(primes.size()<number) { maxp = findNextPrime(primes,maxp); } std::cout<<maxp<<std::endl; }
Ind primeFactor(std::list<Ind>& primes, Ind n) { for(auto iter = primes.begin(); iter != primes.end(); ++ iter) { if((n%(*iter))==0) return *iter; } Ind maxPrime = primes.back(); while(maxPrime*maxPrime<n) { maxPrime = findNextPrime(primes,maxPrime); if((n%maxPrime)==0) return maxPrime; } return n; }
int main(){ //double upperBound = 13195; double upperBound = 600851475143 ; int ub = sqrt(upperBound); int i = 1; int j = 0; int currentHighest = 0; unsigned int pList[500000]; unsigned int pFactors[100]; pList[0] = 2; //while(pList[i]<ub){ while(i<50000){ pList[i] = findNextPrime(pList[i-1],pList,i); if(fmod(upperBound,pList[i]) == 0){ //currentHighest = pList[i]; pFactors[j] = pList[i]; j++; } if(i%200==0){printf("%d\n",i);} i++; } for(i=0;i<j;i++){ printf("%d\n",pFactors[i]); } return 0; }