int main(int argc, char*argv[]) { TimeStats ts; auto primes = primeList(np); auto facs = primeFactor(num,primes); ts.toc(); std::cout<<ts.milliseconds()<<" ms"<<std::endl; }
int FactoringInstance::getRandomComposite(int minFactorNumber,int maxFactorNumber){ vector<int> list = primeList(minFactorNumber,maxFactorNumber); if(list.size()==0){ cout << "There is no prime in range" << endl; return 2; } random_device myRandomGen; return list[myRandomGen()%list.size()]*list[myRandomGen()%list.size()]; }
pair<int,int> FactoringInstance::getRandomPrimePair(int minPrime,int maxPrime){ vector<int> list = primeList(minPrime,maxPrime); random_device r; mt19937 mt(r()); if(list.size()==0){ cout << "There is no prime in range" << endl; return make_pair(2,2); } return make_pair(list[mt()%list.size()],list[mt()%list.size()]); }
int main(int argc, char *argv[]) { long num = 1000; auto primes= primeList(num); for (int i = 0 ; i < num ; ++ i) { if(waysOfSum(i,primes)>5000) { std::cout<<i<<std::endl; break; } } }
/** answer is 748317 */ int main(int argc, char *argv[]) { long pb = 1e7; std::set<long> primeset = primeList(pb); std::set<long> truncprimes; growPrime(truncprimes,"7",primeset); growPrime(truncprimes,"3",primeset); long sum = 0; std::for_each(truncprimes.begin(),truncprimes.end(),[&sum](auto& i) { sum+=i; }); std::cout<<truncprimes.size()<<std::endl; std::cout<<sum-10<<std::endl; }
/** answer is -59231 */ int main(int argc, char *argv[]) { std::set<long> bchoices = primeList(1000); long c = 1e6; std::set<long> primeset = primeList(c); int ma = -1000; int mb = -1000; int mnum = -1; for(auto bi = bchoices.begin(); bi != bchoices.end() ; ++ bi) { int b = *bi; int lb = static_cast<int>(std::sqrt(b)); for(int a = -b ; a < 1000 ; ) { int num = primeNumber(a,b,primeset); if(num==-1) { std::cout<<"over"<<std::endl; c = 2*c; primeset = primeList(c); } else if(num>mnum) { mnum = num; ma = a; mb = b; a += 2; } else { a += 2; } } } std::cout<<ma<<' '<<mb<<' '<<ma*mb<<' '<<mnum<<std::endl; }
#include "prime.h" #include <iostream> #include <cmath> const long num = 1000000; std::set<long> primes = primeList(static_cast<long>(sqrt(num))); /** -1 for no chain */ int chainLength(long i, std::vector<bool>& mark) { std::function<int(long,int,std::list<long>& chain)> impl = [&mark,&impl,i](long curr, int len,std::list<long>& chain)->int { chain.emplace_back(curr); if(curr>num) return -1; if (!mark[curr]) return -1; else mark[curr] = false; if(curr == 1) return -1; long next = divSummation(division(curr,primes)); auto iter = std::find(chain.begin(),chain.end(),next); if(iter == chain.end()) return impl(next,len+1,chain); else { chain.emplace_back(next); return std::distance(iter,chain.end()); }