10 //#define K_CONST 21181
11 //#define N_CONST 44200000
13 /* recent find (k=46157, n=698207)*/
14 //#define K_CONST 46157
15 //#define N_CONST 698206
17 /* searching for k=301, n=7360 */
56 //proth number is k*2^n+1
57 mpz_set_ui(k
, K_CONST
);
62 unsigned long int n
= N_CONST
;
65 printf("(n=%llu)\n", n
);
68 mpz_pow_ui(exp
, base
, n
);
75 //prime check exponent is (p-1)/2
76 mpz_sub_ui(t_exp
, p
, 1);
77 mpz_divexact_ui(t_exp
, t_exp
, 2);
79 //printf("prime check a=2\n");
80 mpz_powm(t
, t_p1
, t_exp
, p
);
83 if(mpz_cmp(t
, p
) == 0)
85 printf("prime with a=2!\n");
89 //printf("prime check a=3\n");
90 mpz_powm(t
, t_p2
, t_exp
, p
);
93 if(mpz_cmp(t
, p
) == 0)
95 printf("prime with a=3!\n");
99 //printf("prime check a=5\n");
100 mpz_powm(t
, t_p3
, t_exp
, p
);
103 if(mpz_cmp(t
, p
) == 0)
105 printf("prime with a=5!\n");
112 //proth number is k*2^n+1
113 gmp_printf("%Zd*2^%llu+1 is prime!\n", k
, n
);
129 printf("total time: %f seconds\n", difftime(end
, start
));