C++での数の素数階乗
この問題では、数nが与えられます。私たちの仕事は、その素数階乗番号を印刷することです。
素数階乗番号 (Pn#)は、最初のn個の素数の積である数です。
素数階乗の数は、数nの階乗に似ています。違いは、階乗は任意の数にすることができますが、素数の場合はすべての素数が使用されることです。
問題を理解するために例を見てみましょう
Input: N = 4 Output 210 Explanation: Primorial number, Pn# = 2 * 3 * 5 * 7 = 210
この問題を解決するには、最初のn個の素数を見つける必要があります。素数の値であるnまでのすべての素数の積を出力します。
例
ソリューションの実装を示すプログラム
#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;
} 出力
Primorial(P#) of first 6 prime numbers is 30030
-
C++での可変数の引数
場合によっては、事前定義された数のパラメーターの代わりに、可変数の引数、つまりパラメーターを受け取ることができる関数が必要な状況に遭遇することがあります。 C / C ++プログラミング言語はこの状況の解決策を提供し、要件に基づいて可変数のパラメーターを受け入れることができる関数を定義することができます。次の例は、そのような関数の定義を示しています。 int func(int, ... ) { . . . } int main() { func(1, 2, 3); func(1, 2, 3, 4); } 関数func()の最後の引数は楕円、つまり3つのドット(.
-
C++のCHAR_BIT
CHAR_BITは、charのビット数です。これは、C++言語の「limits.h」ヘッダーファイルで宣言されています。 1バイトあたり8ビットです。 これがC++言語のCHAR_BITの例です 例 #include <bits/stdc++.h> using namespace std; int main() { int x = 28; int a = CHAR_BIT*sizeof(x); stack<bool> s; cout << "T