C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++での素数の最大数


このチュートリアルでは、素数がn未満の最大数を見つけるプログラムを作成します。

問題を解決するための手順を見てみましょう。

  • 0からnまで繰り返すループを作成します。
    • 現在の桁が素数でない場合。
      • 桁が2未満の場合、i値をデクリメントします。i値が負の場合は、0にします。
      • 現在のインデックス値を次に小さい素数で更新します。
      • 次のインデックスから、すべての桁を7にします。
  • nを返します。

コードを見てみましょう。

#include <bits/stdc++.h>
using namespace std;
bool isPrime(char c) {
   return c == '2' || c == '3' || c == '5' || c == '7';
}
void decrease(string& n, int i) {
   if (n[i] <= '2') {
      n.erase(i, 1);
      n[i] = '7';
   }else if (n[i] == '3') {
      n[i] = '2';
   }else if (n[i] <= '5') {
      n[i] = '3';
   }else if (n[i] <= '7') {
      n[i] = '5';
   }else {
      n[i] = '7';
   }
   return;
}
string getPrimeDigitsNumber(string n) {
   for (int i = 0; i < n.length(); i++) {
      if (!isPrime(n[i])) {
         while (n[i] <= '2' && i >= 0) {
            i--;
         }
         if (i < 0) {
            i = 0;
         }
         decrease(n, i);
         for (int j = i + 1; j < n.length(); j++) {
            n[j] = '7';
         }
         break;
      }
   }
   return n;
}
int main() {
   string n = "7464";
   cout << getPrimeDigitsNumber(n) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

7377

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. 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) {      

  2. 数値がC++でフルプライムであるかどうかを確認します

    ここでは、数値が完全素数であるかどうかを確認する方法を説明します。数が素数であり、そのすべての桁も素数である場合、その数は完全な素数であると言われます。数が37であるとすると、これは完全な素数です。しかし、9は素数ではないため、97は完全な素数ではありません。 効率的なアプローチの1つはそれです。まず、素数ではない数字が存在するかどうかを確認する必要があります。数字は0から9でなければなりません。その範囲では、2、3、5、および7が素数であり、その他は素数ではありません。すべてが素数の場合は、その数が素数であるかどうかを確認します。 例 #include <iostream> u