mpz_t rand1,rand2;
mpz_init (rand1);
mpz_init (rand2);
mpz_random (rand1,512);
//mpz_random (rand2,512);
mpz_nextprime ( rand2, rand1 );
gmp_printf("random %Zd\n", rand2);
//free the big ints
mpz_clear(rand1);
mpz_clear(rand2);
然而,我随机打印它可以工作,但第二个我打电话下一个素数没有打印出来?
答案 0 :(得分:1)
从信息页面:
- 功能:void mpz_random(mpz_t ROP,mp_size_t MAX_SIZE) 生成最多MAX_SIZE分支的随机整数。生成的 随机数不满足任何特定要求 随机性。 MAX_SIZE时会生成负随机数 是否定的。
此功能已过时。使用
mpz_urandomb' or
mpz_urandomm' 代替。
您正在创建一个包含512个肢体的随机(ish)整数,如果肢体为32位,则为16384位;如果肢体为64位,则为32768位。该范围内的素数很少,因此GMP需要一段时间才能找到。
据推测,你打算找到512位的素数?