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

すべての素数をnより小さくするための興味深い解決策はありますか?


ここでは、効率的な方法でn未満のすべての素数を生成する方法を説明します。このアプローチでは、ウィルソンの定理を使用します。彼の定理によれば、数kが素数の場合、((k --1)!+ 1)modkは0になります。このアイデアを得るためのアルゴリズムを見てみましょう。

このアイデアは、大きな整数をサポートしないため、CまたはC++のような言語では直接機能しません。階乗は多数を生成します。

アルゴリズム

genAllPrime(n)

Begin
   fact := 1
   for i in range 2 to n-1, do
      fact := fact * (i - 1)
      if (fact + 1) mod i is 0, then
         print i
      end if
   done
End

#include <iostream>
using namespace std;
void genAllPrimes(int n){
   int fact = 1;
   for(int i=2;i<n;i++){
      fact = fact * (i - 1);
      if ((fact + 1) % i == 0){
         cout<< i << " ";
      }
   }
}
int main() {
   int n = 10;
   genAllPrimes(n);
}

出力

2 3 5 7

  1. C++の配列内のすべての素数の積

    いくつかの要素を持つ整数配列arr[]が与えられた場合、タスクはその数のすべての素数の積を見つけることです。 素数は、1で割った数、またはその数自体です。または、素数は、1とその数自体を除いて他の数で割り切れない数です。 1、2、3、5、7、11など 与えられた配列の解を見つける必要があります- 入力 −arr [] ={11、20、31、4、5、6、70} 出力 − 1705 説明 −配列の素数は− 11、31、5であり、それらの積は1705 入力 − arr [] ={1、2、3、4、5、6、7} 出力 − 210 説明 −配列の素数は− 1、2、3、5、7

  2. ある間隔ですべての素数を出力するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −与えられた範囲内のすべての素数を計算するために必要な間隔が与えられます ここでは、解を得るための強引なアプローチ、つまり素数の基本的な定義について説明します。素数は、1とそれ自体を因数として持ち、残りのすべての数はその因数ではない数です。 素数の条件が真であると評価されるたびに、計算が実行されます。 それでは、以下の実装の概念を見てみましょう- 例 start = 1 end = 37 for val in range(start, end + 1):    # If num is