Hi, developer!
I installed MinGW, then 'mingw-get install mingw32-gmp' , got the gmp 5.1.2 properly. mpz_powm_ui () give a wrong calculation as below (compared and confirmed by Python): // 2^(c-1) = 1 mod c^2, c = ? #include <stdio.h> #include <time.h> #include <gmp.h> int main() { printf("hello, world! \n"); unsigned long long c = 10307e7 - 1; // change c,start point printf("c reach %llu \n",c); mpz_t a,b,d; mpz_inits(a,b,d,NULL); mpz_set_ui(a,2); for (; ;c += 2) { if (c % 100000000 == 1) { printf("c reach %llu, %llu \n",c,(unsigned long long)time(NULL)); } mpz_set_ui(b,c); mpz_mul_ui(b,b,c); mpz_powm_ui(d,a,c-1,b ); if (mpz_cmp_ui(d,1) == 0) // c = 1093,3511 are solutions. why 103079216179 ? { printf("found %llu \n",c); return 0; } } } I saw a bug report for the mpz_powm_ui () in 5.1.1. from https://gmplib.org. Regards, shen lixing 2017/3/8 GNU Multiple Precision Arithmetic Library - gmplib<https://gmplib.org/> gmplib.org What is GMP? GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating-point numbers. _______________________________________________ gmp-bugs mailing list gmp-bugs@gmplib.org https://gmplib.org/mailman/listinfo/gmp-bugs