Я пытался вычислить время, необходимое для выборки 7680-битных простых чисел в библиотеке FLINT.У меня был цикл, работающий в течение 100 итераций, и, наконец, я рассчитал среднее требуемое время.На моем Mac приведенному ниже коду потребовалось более 5 часов для запуска (я оставил код, работающий на mac, в 2:00 без закрытия крышки. Когда я увидел снова в 7:00, код все еще работает).Но, наконец, он показал результат «33,3442» секунд.Как это возможно?
#include "fmpz.h"
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int main() {
int count = 100;
int length = 7680;
fmpz_t primes[count];
flint_rand_t state;
flint_randinit(state);
for (int i = 0; i < count; i++)
fmpz_init(primes[i]);
auto start = high_resolution_clock::now();
for (int i = 0; i < count; i++)
{
while (true)
{
fmpz_randbits(primes[i], state, length);
if (fmpz_is_probabprime(primes[i]))
break;
}
}
auto stop = high_resolution_clock::now();
auto duration = duration_cast<microseconds>(stop - start);
cout << "Generating random primes of length " << length << " " << ((double)duration.count()/1000000)/count << endl;
}