Trong bài toán này, chúng ta được cho một số n. Nhiệm vụ của chúng tôi là in số đầu của nó.
Số đầu (Pn #) là một số là tích của n số nguyên tố đầu tiên.
Số nguyên tố tương tự như giai thừa của một số n. Sự khác biệt là giai thừa có thể là bất kỳ số nào nhưng trong trường hợp là số nguyên tố, tất cả các số nguyên tố đều được sử dụng.
Hãy lấy một ví dụ để hiểu vấn đề,
Input: N = 4 Output 210 Explanation: Primorial number, Pn# = 2 * 3 * 5 * 7 = 210
Để giải bài toán này, chúng ta phải tìm n số nguyên tố đầu tiên. In tích của tất cả các số nguyên tố đến n là giá trị của các số nguyên tố.
Ví dụ
Chương trình cho thấy việc triển khai giải pháp của chúng tôi,
#include<bits/stdc++.h> using namespace std; const int MAX = 1000000; vector <int> primeNumbers; void findPrimes() { bool marked[MAX/2 + 1] = {0}; for (int i = 1; i <= (sqrt(MAX)-1)/2 ; i++) for (int j = (i*(i+1))<<1 ; j <= MAX/2 ; j += 2*i +1) marked[j] = true; primeNumbers.push_back(2); for (int i=1; i<=MAX/2; i++) if (marked[i] == false) primeNumbers.push_back(2*i + 1); } int findPrimorial(int n) { findPrimes(); int result = 1; for (int i=0; i<n; i++) result = result * primeNumbers[i]; return result; } int main() { int N = 6; cout<<"Primorial(P#) of first "<<N<<" prime numbers is "<<findPrimorial(N)<<endl; return 0; }
Đầu ra
Primorial(P#) of first 6 prime numbers is 30030