174 lines
1.5 KiB
C++
174 lines
1.5 KiB
C++
|
|
|
|
#include <iostream>
|
|
#include <fstream>
|
|
#include <cmath>
|
|
#include <vector>
|
|
#include <omp.h>
|
|
|
|
|
|
bool is_prime(int num) {
|
|
if (num <= 1) {
|
|
return false;
|
|
}
|
|
for (int i = 2; i <= sqrt(num); i++) {
|
|
if (num % i == 0) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
int main() {
|
|
|
|
|
|
|
|
long long int low_lim = 10000000000LL; // 1 миллиард
|
|
long long int up_lim = 100000000000LL; // 100 миллиардов
|
|
|
|
|
|
long long int new_low_lim = pow(low_lim, 1.0 / 4.0);
|
|
long long int new_up_lim = pow(up_lim, 1.0 / 4.0);
|
|
|
|
|
|
std::vector<long long int> primes;
|
|
|
|
|
|
#pragma omp parallel for
|
|
|
|
for (long long int i = new_low_lim; i <= new_up_lim; i++) {
|
|
long long int number = pow(i, 4);
|
|
|
|
|
|
#pragma omp critical
|
|
{
|
|
|
|
if (number >= low_lim && number <= up_lim && is_prime(i)) {
|
|
|
|
primes.push_back(number);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
std::ofstream output_file("/home/danila/zadanie1openmp.txt");
|
|
|
|
if (output_file.is_open()) {
|
|
|
|
for (const auto& prime_power : primes) {
|
|
output_file << prime_power << std::endl;
|
|
}
|
|
|
|
output_file.close();
|
|
std::cout << "Результаты записаны в файл result.txt на рабочем столе." << std::endl;
|
|
}
|
|
else {
|
|
std::cerr << "Ошибка открытия файла для записи." << std::endl;
|
|
}
|
|
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Любопытный, да?
|