Exemplo n.º 1
0
int main() {
	
	boost::timer t;	
	Primes p;
    int max = 20;

    map<int,int> factors;

    for (int i = 1; i <= max; i++) {
        auto curr_factors = p.prime_factors(i);

        for (map<long,int>::iterator it = curr_factors.begin(); it != curr_factors.end();
             ++it) {
            if (factors[it->first] < it->second){
                factors[it->first] = it->second;
            }
        }
    }

    long product = 1;
    for (map<int,int>::iterator it = factors.begin(); it != factors.end(); ++it) {
        for (int i = 0; i < it->second; i++) {
            product *= it->first;
        }
    }

    cout << product << endl;
	cout << t.elapsed()*1000 << "ms" << endl;

    return 0;
}
Exemplo n.º 2
0
bool isOddComposite(long long n, Primes primes){
  if(n%2 == 0) return false;
  if(primes.find(n) != primes.end()) return false;
  for(long long i = 3; i < n; i+= 2){
    if(n%i == 0){
      //cout << "base," << n << " divite by " << i << endl;
      return true;  
    }  
  }
  return false;
}
Exemplo n.º 3
0
int is_amicable(int n, Primes &p) {
  int fac_sum1 = p.sum_proper_divisors(n);
  if ( fac_sum1 <= n ) {
    return 0;
  }


  int fac_sum2 = p.sum_proper_divisors(fac_sum1);
  if (fac_sum2 == n) {
    return n + fac_sum1;
  }
  return 0;
}
Exemplo n.º 4
0
int main() {
  Primes myprimes;
  int num_factors = 1;
  int i = 2;
  int num;
  while (num_factors <= 500) {
    num = nth_triangular(i);
    auto factors = myprimes.prime_factors(num);
    num_factors = num_factors_from_prime_factors(factors);
    i++;
  }

  cout << num << endl;

  return 0;
}
Exemplo n.º 5
0
int main() {

  Primes p;

  for (int i = 1; i < 28123; i++ ) {
    cout << i << " " <<  p.abundance(i) << endl;
  }

  int sum = 0;
  for (int i = 1; i <= 28123; i++ ) {
    cout << i << endl;
    if (!p.is_sum_of_abundant(i)) {
      sum += i;
    }
  }

  cout << sum << endl;
}
Exemplo n.º 6
0
	template<typename T> const std::vector<std::pair<T, unsigned int> > PrimeFactors(const T& value)
	{
		Primes<T> primes;
		std::vector<std::pair<T, T> > result;
		T remainder = value;
		while (remainder > 1) {
			primes.Next();
			unsigned int count = 0;
			while (remainder % primes.Current() == 0) {
				remainder /= primes.Current();
				count++;
			}
			if (count > 0) {
				result.push_back(std::make_pair(primes.Current(), count));
			}
		}
		return result;
	}
Exemplo n.º 7
0
std::vector< std::pair<int, int> > getFactors(int n){
    std::vector< std::pair<int, int> > factors;
    int p = 2;
    do{
        int multiplicity = 0;
        while( n % p == 0 ){
            multiplicity++;
            n /= p;
        }
        if( multiplicity ){
            factors.push_back( std::make_pair(p, multiplicity) );
        }
        if( g_primes.isPrime(n) ){
            factors.push_back( std::make_pair(n, 1) );
           break;
        }
    } while( (n > 1) && (p = g_primes.nextPrime(p)) );
    return factors;
}
int main() {
	Primes *p = new Primes();

	int a = 123;
	int final_digits[] = { 1,3,7,9};
	for (int i = 0; i < 3; i++) {
    if (p->is_prime(a*10 + final_digits[i])) {
			cout << a*10 + final_digits[i] << endl;
    }
	}
	ulong power = power_10_ceil(a);
	for (int i = 1; i < 10; i++) {
    if (p->is_prime(a + power*i)) {
			cout << a + (power * i) << endl;
    }   		
	}
	for(vector<ulong>::iterator i = p->primes_by_len[digits_in_num(a)]->begin(); i != p->primes_by_len[digits_in_num(a)]->end(); i++) {
		ulong t1 = a;
		ulong t2 = *i;
		if (t1 > t2) {
			ulong t3 = t1;
			t1 = t2;
			t1 = t3;
		}
		ulong diff = t2 - t1;
    if (diff % 10 == 0 && diff > 0) {
     while (diff % 10 == 0) {
			 diff /= 10; 
     }
		 diff = diff - (diff % 10);
		 if (diff == 0) {   
			 cout << *i << endl;
		 }
   }
	};

  return(0);
}
Exemplo n.º 9
0
bool test(int n){
    --n;
    // test that its two least significant digits are 01
    if( !(n & 0x1) && ( (n>>1) & 0x1) ){
        // factor
        std::vector<int> divs( getDivisors(n) );
        std::vector<int>::iterator it;
        for(it = divs.begin(); it != divs.end(); it++){
            if( !g_primes.isPrime(*it + n/(*it)) ){
                return false;
            }
        }
        return true;
    }
    else{
        return false;
Exemplo n.º 10
0
bool test_get_smallest_prime_divisor(Primes pr, llint input, llint soln) {
	return pr.get_smallest_prime_divisor(input) == soln;
}
Exemplo n.º 11
0
bool test_is_divisible_by(Primes pr, llint num, llint denom, bool is_divisible_by) {
	return pr.is_divisible_by(num, denom) == is_divisible_by;
}
Exemplo n.º 12
0
bool test_is_prime(Primes pr, llint input, bool is_prime) {
	return pr.is_prime(input) == is_prime;
}