Linux gmp類庫的簡單使用(二)
阿新 • • 發佈:2019-02-19
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 是較合理的數值,更多次的判別可以減小合數被返
//回為概率素數的可能。
下載地址: