Khái niệm
Đối với số dương n đã cho, nhiệm vụ là xác minh xem n có phải là số nguyên tố sơ cấp hay không. Chúng ta phải in ‘CÓ’ nếu n là số nguyên tố nguyên tố, nếu không thì in ‘KHÔNG.
Số nguyên tố Nguyên tố - Đối với Toán học, một số nguyên tố Nguyên tố được định nghĩa là một số nguyên tố có dạng pN # + 1 hoặc pN # - 1, trong đó pN # là số nguyên tố của pN sao cho tích của N số nguyên tố đầu tiên.
Đầu vào - n =7
Đầu ra - CÓ
7 là số nguyên tố Nguyên tố có dạng pN + 1 với N =2, Nguyên tố là 2 * 3 =6 và 6 + 1 =7.
Đầu vào - n =29
Đầu ra - CÓ
29 là số nguyên tố Nguyên tố có dạng pN - 1 với N =3, Nguyên tố là 2 * 3 * 5 =30 và 30-1 =29.
Sau đây, một số số nguyên tố Nguyên tố đầu tiên được hiển thị - 2, 3, 5, 7, 29, 31, 211, 2309, 2311, 30029
Phương pháp tiếp cận
-
Chúng ta phải tạo tất cả các số nguyên tố trong phạm vi bằng cách áp dụng Sieve of Eratosthenes.
-
Xác minh xem N có phải là số nguyên tố hay không, Nếu N không phải là số nguyên tố thì in Không
-
Nếu không, bắt đầu từ số nguyên tố đầu tiên (tức là 2) bắt đầu nhân số nguyên tố tiếp theo và tiếp tục xác minh xem sản phẩm + 1 =N hay sản phẩm - 1 =N hay không
-
Người ta đã thấy rằng nếu sản phẩm + 1 =N hoặc sản phẩm-1 =N, thì N là Nguyên tố sơ cấp, ngược lại thì không.
Ví dụ
// CPP program to check Primorial Prime #include <bits/stdc++.h> using namespace std; #define MAX 10000 vector<int> arr1; bool prime1[MAX]; void SieveOfEratosthenes1(){ memset(prime1, true, sizeof(prime1)); for (int p = 2; p * p < MAX; p++) { if (prime1[p] == true) { for (int i = p * 2; i < MAX; i += p) prime1[i] = false; } } for (int p = 2; p < MAX; p++) if (prime1[p]) arr1.push_back(p); } bool isPrimorialPrime1(long n){ // If n is not prime Number // return flase if (!prime1[n]) return false; long long product1 = 1; int i = 0; while (product1 < n) { product1 = product1 * arr1[i]; if (product1 + 1 == n || product1 - 1 == n) return true; i++; } return false; } // Driver code int main(){ SieveOfEratosthenes1(); long n = 29; // Check if n is Primorial Prime if (isPrimorialPrime1(n)) cout << "YES\n"; else cout << "NO\n"; return 0; }
Đầu ra
YES