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

ニューマン-シャンクス-ウィリアムズはC++で素数


ニューマン-シャンクス-ウィリアムズプライムシーケンスは次のとおりです

1、1、3、7、17、41 ...

シーケンス項目を一般化すると、次のようになります

a0=1
a1=1
an=2*a(n-1)+a(n-2)

アルゴリズム

  • 番号nを初期化します。
  • シーケンス1と1の最初の番号を初期化します。
  • nまで繰り返すループを作成します。
    • 前の数値を使用して次の数値を計算します。
    • 前の2つの番号を更新します。
  • 最後の番号を返します。

実装

以下は、C++での上記のアルゴリズムの実装です

#include <bits/stdc++.h>
using namespace std;
int getNthTerm(int n) {
   if(n == 0 || n == 1) {
      return 1;
   }
   int a = 1, b = 1;
   for(int i = 3; i <= n; ++i) {
      int c = 2 * b + a;
      a = b;
      b = c;
   }
   return b;
}
int main() {
   int n = 5;
   cout << getNthTerm(n) << endl;
   return 0;
}

出力

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

17

  1. C++の平衡素数

    平衡素数 numberは、前の素数と次の素数で同じ差がある素数です。つまり、最も近い次の素数と前の素数の平均です。 素数が平衡素数になるには、次の式に従う必要があります- P n =(P(n-1)+ P(n + 1))/ 2 ここで、nは、順序付けられた素数のセット内の素数pnのインデックスです。 素数の順序集合:2、3、5、7、11、13、…。 まず、平衡素数は5、53、157、173、… この問題では、数nが与えられ、n番目の平衡素数を見つける必要があります。 例を見てみましょう Input : n = 3 Output : 157 このため、素数を生成し、配列に

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

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