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

エラトステネスのふるいを実装して、指定された範囲の素数を生成するC++プログラム


これは、エラトステネスのふるいを実装して、指定された範囲間で素数を生成するC++プログラムです。この方法では、すべての要素を含む整数配列がゼロに初期化されます。

これは、ネストされたループ内で各非素元要素のインデックスが1としてマークされている場所に続きます。素数は、インデックスが0とマークされているものです。

アルゴリズム

Begin
   Declare an array of size n and initialize it to zero
   Declare length, i, j
   Read length
   For i = 2 to n-1 do
      For j = i*i to n-1 do
         Arr[j-1]=1
      Done
   Done
   For i =1 to n do
      If(arr[i-1]==0)
         Print i
   Done
End

サンプルコード

#include <iostream>
const int len = 30;
int main() {
   int arr[30] = {0};
   for (int i = 2; i < 30; i++) {
      for (int j = i * i; j < 30; j+=i) {
         arr[j - 1] = 1;
      }
   }
   for (int i = 1; i < 30; i++) {
      if (arr[i - 1] == 0)
         std::cout << i << "\t";
   }
}

出力

1 2 3 5 7 11 13 17 19 23 29

  1. 与えられた範囲の間で素数を生成するためにホイールシーブを実装するC++プログラム

    Wheel Sieveメソッドは、特定の範囲の間の素数を見つけるために使用されます。ホイール因数分解は、エラトステネスのふるいの予備を手動で実行するためのグラフィカルな方法であり、素数をコンポジットから分離します。 この方法では、最も内側の円の素数は、他の円のそれ自体と同様の位置にそれらの倍数を持ち、素数とその倍数のスポークを形成します。最も内側の円のこれらの素数の倍数は、外側の円の合成数のスポークを形成します。 アルゴリズム Begin    Define max number    gen_sieve_primes()    D

  2. 2つの区間の素数を表示するC++プログラム

    素数は1より大きい整数であり、素数の唯一の要素は1とそれ自体でなければなりません。最初の素数のいくつかは2、3、5、7、11、13、17などです。 2つの区間の間に多くの素数が存在する可能性があります。たとえば、区間5と20の間の素数は-です。 5, 7, 11, 13, 17 and 19. 2つの区間の間で素数を見つけて表示するプログラムは次のとおりです。 例 #include <iostream> using namespace std; void PrimeNumbers (int lbound, int ubound) {    int flag,