У меня есть числа от 1 до 18446744073709551615. И для каждого числа вычисляется остаток от деления. Но вычисления получаются бесконечными, мне сказали, что нужно делать в несколько потоков и тогда будет все параллельно, но я не понимаю как это.
Получение простого числа 100%. Первые 500 простых чисел по таблице прогонял, ответ тоже 100%. Исходя из
готовых алгоритмов (так как вероятностные использовать нельзя).
#include <iostream>
#include <biginteger.cpp>
using namespace std;
int main(int argc, char *argv[]) {
char *text = "274876858367";
BigInteger n(text), k, q;
if (n % 2 == 0 || n == 1) {
cout << "число не является простым" << endl;
return 0;
}
q = n.sqrt() + 1;
BigInteger m;
bool prm = true;
// простые делители
// начинаются с тройки
for(k = 3; k <= q; ) {
// все четные делители и все делители,
// кратные простым числам, могут быть опущены
if ((k % 2 == 0) || (k % 3 == 0)) { k++; continue; }
//m = n%k;
//cout << "n = " << n << " k = " << k << ", n % k = " << m <<endl;
if (n % k == 0) {
prm = false;
break;
}
k++;
}
if (prm) cout << "число является простым" << endl;
else cout << "число не является простым" << endl;
return 0;
}
Можете привести примеры, пожалуйста?