# mpz_powm_ui () for 5.1.2

shen lixing shenlixing at hotmail.com
Wed Mar 8 01:17:05 UTC 2017

```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.

```