Я пытаюсь использовать эту библиотеку для программы больших простых чисел.
Я установил GMP и установил компилятор: Microsoft Visual Studio Community 2019
Я просто пытаюсь для генерации простых чисел:
#include <gmp.h>
int main() {
gmp_randstate_t state; // variable state for gmp_randinit, must be initialized
mpz_t p, q, N;
mp_bitcnt_t n; // number of bits for the number in range 0 to (2^n)-1, inclusive.
n = 10;
gmp_randinit_default(state); // Initialize state with a default algorithm.
while (true)
{
mpz_urandomb(p, state, n); // Generate a uniformly distributed random integer
if (mpz_probab_prime_p(p, 50) == 2) // Determine whether p is prime. Return 2 if p is definitely prime
break;
}
while (true)
{
mpz_urandomb(q, state, n); // Generate a uniformly distributed random integer
if (mpz_probab_prime_p(q, 50) == 2) // Determine whether q is prime. Return 2 if q is definitely prime
break;
}
return 0;
}
Когда я пытаюсь запустить через Visual Studio, я получаю сообщение об ошибке:
C4146: unary minus operator applied to unsigned type, result still unsigned
в файле gmp.h
строка 2230
Когда я пытаюсь запустить через WSL 2, Ubuntu со следующим:
g++ filename.cpp -lgmpxx -lgmp
./a.out
Я получаю этот вывод: Segmentation fault
Я не понимаю, почему это так.
Спасибо.