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;
}
Exemple #2
0
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()];
}
Exemple #3
0
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()]);
}
Exemple #4
0
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());
		}