1. 程式人生 > >Linux gmp類庫的簡單使用(二)

Linux gmp類庫的簡單使用(二)

GMP常用函式介紹(這裡只簡單介紹一下整數函式,如需更多請自行閱讀手冊)

1.初始化函式

mpz_t integ;// 定義
mpz_init (integ)// 初始化,預設值為0

2.賦值函式

//      把op賦值給rop 
void mpz_set (mpz_t rop, mpz_t op) //注意,兩個數的型別都是mpz_t
void mpz_set_ui (mpz_t rop, unsigned long int op)
void mpz_set_si (mpz_t rop, signed long int op)
void mpz_set_d (mpz_t rop, double op)//將會捨去op的小數部分

3.初始化賦值函式

mpz_t pie;// 定義
mpz_init_set_str (pie,"3141592653589793238462643383279502884", 10);//其中10表示10進位制

4.算術函式

// rop = op1 + op2
void mpz_add (mpz_t rop, mpz_t op1, mpz_t op2)
void mpz_add_ui (mpz_t rop, mpz_t op1, unsigned long int op2)//注意型別

// rop = op1 - op2
void mpz_sub (mpz_t rop, mpz_t op1, mpz_t op2)
void
mpz_sub_ui (mpz_t rop, mpz_t op1, unsigned long int op2)//注意型別 void mpz_ui_sub (mpz_t rop, unsigned long int op1, mpz_t op2)//注意型別 // rop = op1 * op2 void mpz_mul (mpz_t rop, mpz_t op1, mpz_t op2) void mpz_mul_si (mpz_t rop, mpz_t op1, long int op2) void mpz_mul_ui (mpz_t rop, mpz_t op1, unsigned long int
op2) // q = n / d + r void mpz_cdiv_q (mpz_t q, mpz_t n, mpz_t d) void mpz_cdiv_r (mpz_t r, mpz_t n, mpz_t d) void mpz_cdiv_qr (mpz_t q, mpz_t r, mpz_t n, mpz_t d)

5.指數函式

// rop = base ^ exp
void mpz_pow_ui (mpz_t rop, mpz_t base, unsigned long int exp)
void mpz_ui_pow_ui (mpz_t rop, unsigned long int base,
unsigned long int exp)//注意型別

6.數論函式

int mpz_probab_prime_p (mpz_t n, int reps)
//判斷 n 是否為素數,若 n 確定是素數則返回 2,如果 n 是概率素數 (不能完全
//確定) 那麼返回 1,或者如果 n 確定是合數那麼返回 0。reps 控制這
//樣的判別做多少次,5 到 10 是較合理的數值,更多次的判別可以減小合數被返
//回為概率素數的可能。

下載地址: