如何在GMP中的while循环中获得不相等

时间:2014-05-07 21:29:26

标签: c++ gmp

我正在尝试使用GMP整数在VC 2008 Express中执行do-while循环

mpz_t d;    
mpz_init(d);
do{


}while(d!=1);

错误是:错误C2040:'!=':'mpz_t'的间接级别与'int'不同 d!= 1部分导致了这一点。有什么办法围绕这个。使用GMP的原因是大数字。

1 个答案:

答案 0 :(得分:3)

来自docs

  

功能:int mpz_cmp (MP_INT *operand1, MP_INT *operand2)
  ...
  比较operand1operand2。如果是operand1 > operand2,则返回正值   operand1 == operand2,如果operand1 < operand2,则为负值。

检查mpz_set_<xx>函数,从常规整数常量(mpz_t表示)设置1值,以与

进行比较
mpz_t d;    
mpz_init(&d);
mpz_t one;
mpz_set_si(&one,1);

// ...
do {
} while(mpz_cmp(&d,&one) != 0);