C++で指定された数以下の最大の特殊素数を検索します
数nがあるとします。 N以下の最大の特別な素数を見つける必要があります。特別な素数は数字であり、数字を次々に配置することで作成できるため、結果の数字はすべて素数になります。
ここでは、エラトステネスのふるいを使用します。数nまでのふるい配列を作成します。次に、数が素数であるかどうかを確認することにより、数Nから繰り返し開始します。これが素数の場合、これが特別な素数であるかどうかを確認します。
例
#include<iostream>
using namespace std;
bool isSpecialPrime(bool sieve[], int num) {
while (num) {
if (!sieve[num]) {
return false;
}
num /= 10;
}
return true;
}
void findSpecialPrime(int N) {
bool sieve[N + 10];
for(int i = 0; i<N+10; i++){
sieve[i] = true;
}
sieve[0] = sieve[1] = false;
for (long long i = 2; i <= N; i++) {
if (sieve[i]) {
for (long long j = i * i; j <= N; j += i) {
sieve[j] = false;
}
}
}
while (true) {
if (isSpecialPrime(sieve, N)) {
cout << N << '\n';
break;
}
else
N--;
}
}
int main() {
cout << "Special prime in range (2 -> 400): ";
findSpecialPrime(400);
cout << "Special prime in range (2 -> 100): ";
findSpecialPrime(100);
} 出力
Special prime in range (2 -> 400): 379 Special prime in range (2 -> 100): 79
-
C ++を使用して、数値の最大の素因数を見つけます。
要素xがあるとすると、xの最大の素因数を見つける必要があります。 xの値が6の場合、最大の素因数は3です。この問題を解決するには、数値を除数で割って数値を因数分解し、最大の素因数を追跡します。 例 #include <iostream> #include<cmath> using namespace std; long long getMaxPrimefactor(long long n) { long long maxPF = -1; while (n % 2 == 0) {
-
C++でn以下のすべての階乗数を検索します
ここでは、n以下のすべての階乗数を出力する方法を説明します。数値Nは、正の数の階乗である場合、階乗数と呼ばれます。したがって、いくつかの階乗数は1、2、6、24、120です。 階乗数を印刷するために、階乗を直接見つける必要はありません。 i =1から始めて、階乗*iを出力します。最初は階乗は1です。理解を深めるためにコードを見てみましょう。 例 #include <iostream> using namespace std; void getFactorialNumbers(int n) { int fact = 1; int