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

C++でnの前の平方数と非平方数を数える


数Nが与えられます。目標は、それらの立方体の合計がNになるような正の数の順序対を見つけることです。

ナイーブアプローチ

1からNまでのすべての数値をトラバースし、それが完全な正方形であるかどうかを確認します。 floor(sqrt(i))==ceil(sqrt(i))。

の場合

そうすれば、その数は完全な正方形になります。

効率的なアプローチ

Nの下の完全な平方は、式:floor(sqrt(N))を使用して見つけることができます。

例を挙げて理解しましょう。

入力

N=20

出力

Count of square numbers: 4
Count of non-square numbers: 16

説明

Square numbers are 1, 4, 9 and 16. Rest all are non-squares and less than 20.

入力

N=40

出力

Count of square numbers: 6
Count of non-square numbers: 34

説明

Square numbers are 1, 4, 9, 16, 25, 36. Rest all are non-squares and less than 40.

ナイーブアプローチ

以下のプログラムで使用されているアプローチは次のとおりです

  • 整数Nを取ります。

  • 関数squareNums(int n)はnを取り、完全な平方または非平方であるn未満の数の数を返します。

  • 初期変数カウントを0とします。

  • forループを使用してi=1からi<=n

    までトラバースします。
  • floor(sqrt(i))==ceil(sqrt(i))の場合、数値は完全な平方なので、カウントをインクリメントします。

  • すべてのループの終わりに、カウントは完全な平方である総数になります。

  • N-squaresは非squaresである数になります

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int squareNums(int n){
   int count = 0;
   for (int i = 1; i <= n; i++){
      if(floor(sqrt(i))==ceil(sqrt(i)))
         { count++; }
   }
   return count;
}
int main(){
   int N = 40;
   int squares=squareNums(N);
   cout <<endl<<"Count of squares numbers: "<<squares;
   cout <<endl<<"Count of non-squares numbers: "<<N-squares;
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of square numbers: 6
Count of non-square numbers: 34

効率的なアプローチ

以下のプログラムで使用されているアプローチは次のとおりです

  • 整数Nを取ります。

  • 可変平方根=floor(sqrt(N))を取ります。

  • 可変の正方形には、Nより下にいくつかの完全な正方形があります。

  • N-squaresは、Nより下の非正方形の数になります。

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int main(){
   int N = 40;
   int squares=floor(sqrt(N));
   cout <<endl<<"Count of squares numbers: "<<squares;
   cout <<endl<<"Count of non-squares numbers: "<<N-squares;
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of square numbers: 6
Count of non-square numbers: 34

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

    この問題では、数nが与えられます。私たちの仕事は、n以下のすべての素数とフィボナッチ数を印刷することです。 問題を理解するために例を見てみましょう Input: n = 30 Output: 2 3 5 13 説明 30未満のフィボナッチ数は次のとおりです:1 1 2 3 5 81321。 これらの数のうち、素数は2 3513です。 この問題を解決するには、n未満のフィボナッチ数列のすべての数が素数であるかどうかを確認する必要があります。 このため、n以下のすべての素数が見つかります。そして、生成された数がフィボナッチ数列に含まれているかどうかを確認します。 番号がフィボナッチ

  2. C++の正方行列の最大値と最小値

    問題の説明 次数n*nの正方行列が与えられた場合、行列から最大値と最小値を見つけます 例 与えられた行列が-の場合 {{15, 17, 19}, {5, 1, 7}, {14, 5, 16}} then Minimum number is 1 and maximum number is 19 アルゴリズム マトリックスから2つの要素を選択します。1つはマトリックスの行の先頭から、もう1つはマトリックスの同じ行の末尾から選択します。 それらを比較し、次にそれらの小さい方をマトリックスの最小値と比較し、大きい方をマトリックスの最大値と比較します。 2つの要素については、3つの比較が必要であ