Ejemplo n.º 1
0
int main(int argc, char* argv[])
{
  int i = 0;
  mpz_t test;
  mpz_t base;

  if (argc != 2)
  {
    printf("Usage: %s <num>\n", argv[0]);
    printf("  Where <num> is the start of a range of 25 numbers to test\n");
    return 0;
  }

  mpz_init_set_str(test, argv[1], 10);
  mpz_init_set_ui(base, 2);

  for (i = 0; i < 25; i++)
  {
    gmp_printf("%6Zd -", test);
    printf("%3d", mpz_prp(test, base));
    printf("%3d", mpz_euler_prp(test, base));
    printf("%3d", mpz_sprp(test, base));
    printf("%3d", mpz_fibonacci_prp(test, 1, -1));
    printf("%3d", mpz_lucas_prp(test, 1, -1));
    printf("%3d", mpz_stronglucas_prp(test, 1, -1));
    printf("%3d", mpz_extrastronglucas_prp(test, 3));
    printf("%3d", mpz_selfridge_prp(test));
    printf("%3d", mpz_strongselfridge_prp(test));
    printf("%3d", mpz_bpsw_prp(test));
    printf("%3d", mpz_strongbpsw_prp(test));
    printf("\n"); fflush(stdout);

    mpz_add_ui(test, test, 1);
  }

  mpz_clear(test);
  mpz_clear(base);

  return 0;
}
Ejemplo n.º 2
0
int is_mpz_prp(mpz_t n)
{
	return mpz_probab_prime_p(n,NUM_WITNESSES) && 
		mpz_strongbpsw_prp(n);
}