это функция
void Bezout (mpz_t rkm2,mpz_t rkm1, int ukm1, int vkm1, int ukm2, int vkm2) {
mpz_set_ui(ukm1,0);
mpz_set_ui(vkm1,1);
mpz_set_ui(ukm2,1);
mpz_set_ui(vkm2,0);
mpz_t rk;
mpz_init(rk);
mpz_mod(rk,rkm2,rkm1);
mpz_t o;
mpz_init(o);
mpz_t k;
mpz_init(k);
mpz_t qk;
mpz_init(qk);
mpz_sub(k,rkm2,rkm1);
mpz_div(o,k,rkm1);
mpz_set(qk,o);
mpz_t i;
mpz_init(i);
mpz_t j;
mpz_init(j);
if (mpz_cmp_ui(rk, 0) == 0) {
gmp_printf("donner a= %2d \n ",ukm1);
gmp_printf("donner b= %2d \n ",vkm1);
}
else {
mpz_t x;
mpz_init(x);
mpz_t y;
mpz_init(y);
mpz_mul(x,qk,ukm1);
mpz_sub(i,ukm2,x);
mpz_mul(y,qk,vkm1);
mpz_sub(j,vkm2,y);
Bezout(rkm1,rk,i,j,ukm1,vkm1);
}
}
int main (int argc, char * argv []) {
mpz_t a, b;
int x,y,z,o;
mpz_init(a);
mpz_init(b);
gmp_printf("donner a \n ");
gmp_scanf("%Zd", &a);
gmp_printf("donner b \n");
gmp_scanf("%Zd", &b); if (mpz_cmp(a, 0) == 0 || mpz_cmp(b, 0) == 0) {
gmp_printf("On suppose a et b strictement positifs.\n ");
}
else
Bezout(a,b,x,y,z,o);
return 0; }