首页 文章

GMP有条件的

提问于
浏览
1

我正在使用libgmp来创建一个简单的程序 . 我可以gmp_printf所有gmp整数,所以我知道这些是初始化和正确分配 . 当我尝试一个简单的if-else条件时会出现问题 .

mpz_t n;
mpz_t c;
mpz_t m;

mpz_init(n);
mpz_init(c);
mpz_init(m); 

mpz_set_str(c, "2", 10);
mpz_set_str(n, "2038074744", 10);

mpz_mod(m, n, c);

gmp_printf("\n%Zd\n%Zd\n%Zd\n", n, c, m);

if(m == 0)
{
printf("number is even\n");
}
else
{
printf("number is odd\n");
}

实际数字打印为0,但始终显示else printf .

2038074744
2
0
number is odd

有没有办法让这个工作?

2 回答

  • 3

    您无法直接与 m 进行比较,因为 m (粗略地说)是一个指针 . 您需要使用GMP中包含的比较功能 . 见http://gmplib.org/manual/Integer-Comparisons.html#Integer-Comparisons

  • 0

    使用 mpz_cmp 而不是 m == 0

    if(mpz_cmp(m,0)  == 0)
        printf("number is even\n");
    else
        printf("number is odd\n");
    

相关问题