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

C++での素数とフィボナッチ


この問題では、数nが与えられます。私たちの仕事は、n以下のすべての素数とフィボナッチ数を印刷することです。

問題を理解するために例を見てみましょう

Input: n = 30
Output: 2 3 5 13

説明

30未満のフィボナッチ数は次のとおりです:1 1 2 3 5 81321。

これらの数のうち、素数は2 3513です。

この問題を解決するには、n未満のフィボナッチ数列のすべての数が素数であるかどうかを確認する必要があります。

このため、n以下のすべての素数が見つかります。そして、生成された数がフィボナッチ数列に含まれているかどうかを確認します。

番号がフィボナッチ数列にある場合 、形式は5i2+4または5i2-4です。

ソリューションの実装を示すプログラム

#include <bits/stdc++.h>
using namespace std;
bool isSquare(int n) {
   int sr = sqrt(n);
   return (sr * sr == n);
}
void printPrimeAndFibnacciNumbers(int n) {
   bool primeNumbers[n + 1];
   memset(primeNumbers, true, sizeof(primeNumbers));
   for (int p = 2; p * p <= n; p++) {
      if (primeNumbers[p] == true) {
         for (int i = p * 2; i <= n; i += p)
            primeNumbers[i] = false;
      }
   }
   for (int i=2; i<=n; i++)
   if (primeNumbers[i] && (isSquare(5*i*i+4) > 0 || isSquare(5*i*i-4) > 0))
      cout<<i<<"\t";
}
int main() {
   int N = 50;
   cout<<"All prime Fibonacci numbers less than "<<N<<" are :\n";
   printPrimeAndFibnacciNumbers(N);
   return 0;
}

出力

All prime Fibonacci numbers less than 50 are :
23513

  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. C++での単一リンクリストの最小および最大素数。

    問題の説明 n個の正の整数のリンクリストが与えられます。最小値と最大値を持つ素数を見つける必要があります。 指定されたリストが-の場合 10 -> 4 -> 1 -> 12 -> 13 -> 7 -> 6 -> 2 -> 27 -> 33 then minimum prime number is 2 and maximum prime number is 13 アルゴリズム 1. Find maximum number from given number. Let us call it maxNumber 2. Generate pri