在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。

  • 使用从i = 1到i <= n的for循环遍历

  • 如果floor(sqrt(i))== ceil(sqrt(i)),则该数字是一个理想的平方,因此增加计数。

  • 在所有循环的末尾,计数将是一个完美平方的总数。

  • N平方将是非平方数

示例

#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 squares numbers: 6
Count of non-squares numbers: 34

高效方法

以下程序中使用的方法如下

  • 我们取整数N。

  • 取变量平方= floor(sqrt(N))。

  • 可变正方形将在N以下具有多个理想正方形。

  • N平方将是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 squares numbers: 6
Count of non-squares numbers: 34
猜你喜欢