void factorize(LL n, vector<LL> &divisor) {
	if (n == 1) return;
	if (prime_test(n)) divisor.push_back(n);
	else {
		LL d = n;
		while (d >= n) d = pollard_rho(n, rand() % (n - 1) + 1);
		factorize(n / d, divisor);
		factorize(d, divisor);
	}
}
paillier_priv
paillier_keygen (size_t nbits, size_t abits, u_int iter)
{
  // Fast decryption
  assert (nbits > 0);
  assert (abits > 0);
  assert (abits <= nbits);

  random_init ();
  size_t sbits = nbits - (2 * abits);
  bigint n, p, q, a, g, k;

  do {
    a  = random_prime (abits, odd_sieve, 2, iter);
    bigint cp = random_bigint (sbits/2 + (sbits & 1));
    bigint cq = random_bigint (sbits/2 + 1);
    
    p = a * cp + 1;
    while (!prime_test (p))
      // p1 = a * (++c1) + 1
      p += a;
    
    q = a * cq + 1;
    while (!prime_test (q))
      // p2 = a * (++c2) + 1
      q += a;
    
    n = p * q;
  } while (n.nbits () != nbits && n.nbits () != (nbits+1) || p == q);
  
  paillier_gen (p, q, n, a, g, k);
  
  if (p > q)
    swap (p, q);
  
  return paillier_priv (p, q, a, g, k, &n);
}
Exemple #3
0
int main(){
	int limit = 20;
	int multiple = 1;

	for (int i = 2; i < limit; i++){
		if (prime_test(i) == true){
			int j = 1;
			int temp = (int) pow(i, j);
			while (temp < limit){
				temp = pow(i, ++j);
			}
			multiple = multiple * (int) pow(i, j - 1);
		}
	}
	printf("%d \n", multiple);
}
int main(int argc, char *argv[]){


    char input[300];
    int sum;

    int i;


    for(i=3; i<1040; i++){
        if(prime_test(i) == 1){
            prime[prime_count++] = i;
        }
    }

    while(gets(input) != NULL){

        sum = 0;

        for(i=0; input[i] != '\0'; i++){
            if(input[i] > 96){
                sum += (input[i] - 96);
            }

            else{
                sum += (input[i] - 38);
            }
        }

        for(i=0; i<prime_count; i++){
            if(sum % prime[i] == 0 && sum != prime[i]){
                printf("It is not a prime word.\n");
                break;
            }

            if(i == prime_count - 1 || sum == prime[i]){
                printf("It is a prime word.\n");
                break;
            }
        }

    }


    return 0;

}