0
我正在嘗試更改函數extended_gcd中mpz_t類型的d的值,然後將其傳遞迴我的主函數,並在執行程序時出現段錯誤。函數參數導致GMP中的段錯誤
int extended_gcd(mpz_t c, mpz_t a, mpz_t b)
{
mpz_t x, lastx, y, lasty, temp, quotient, temp2;
mpz_init(temp);
mpz_init(temp2);
mpz_init(a);
mpz_init(b);
mpz_init(c);
mpz_init(quotient);
mpz_init_set_ui(x,0);
mpz_init_set_ui(lastx,1);
mpz_init_set_ui(lasty,0);
mpz_init_set_ui(y,1);
while(!(mpz_cmp(b, 0)==0))
{
mpz_set(temp, b);
mpz_cdiv_q(quotient, a, b);
mpz_mod(b, a, b);
mpz_set(a, temp);
mpz_set(temp, x);
mpz_mul(temp2, quotient, x);
mpz_sub(x, lastx, temp2);
mpz_set(lastx, temp);
mpz_set(temp, y);
mpz_mul(temp2, quotient, y);
mpz_sub(y, lasty, temp2);
mpz_set(lasty, temp);
}
mpz_set(c, lastx);
mpz_clear(x);
mpz_clear(y);
mpz_clear(lastx);
mpz_clear(lasty);
mpz_clear(temp);
mpz_clear(temp2);
mpz_clear(quotient);
return 0;
}
這是我的主要代碼:
extended_gcd(d,e,phi);
printf("d=");
mpz_out_str(stdout, 10, d);
printf("\n");
任何想法可能是錯誤的,我該如何解決? 謝謝你的時間。