-bool is_prime(mpz_t p)
-{
- //exponent is (p-1)/2
- //printf("exp\n");
- mpz_sub_ui(t_exp, p, 1);
- mpz_divexact_ui(t_exp, t_exp, 2);
- unsigned long int ui_exp = mpz_get_ui(t_exp);
-
- //printf("pow1\n");
- mpz_pow_ui(t, t_p1, ui_exp);
- mpz_add_ui(t, t, 1);
- //printf("div1\n");
- if(mpz_divisible_p(t, p) != 0)
- return true;
-
- //printf("pow2\n");
- mpz_pow_ui(t, t_p2, ui_exp);
- mpz_add_ui(t, t, 1);
- //printf("div2\n");
- if(mpz_divisible_p(t, p) != 0)
- return true;
-
- //printf("pow3\n");
- mpz_pow_ui(t, t_p3, ui_exp);
- mpz_add_ui(t, t, 1);
- //printf("div3\n");
- if(mpz_divisible_p(t, p) != 0)
- return true;
-
- return false;
-}