用 C++ 统计 1 到 N 之间既是完全平方数又是完全立方数的数字个数


给定一个数字 N。目标是统计 1 到 N 之间既是完全平方数又是完全立方数的数字个数。例如,1、64 既是完全平方数又是完全立方数。

我们将使用 sqrt() 计算数字的平方根,并使用 cbrt() 计算数字的立方根。

让我们通过示例来理解。

输入 - N=100

输出 - 既是完全平方数又是完全立方数的数字个数 - 2

解释 - 1 和 64 是 1 到 100 之间唯一既是完全平方数又是完全立方数的数字。

输入 - N=5000

输出 - 既是完全平方数又是完全立方数的数字个数 - 3

解释 - 1、64 和 4096 是 1 到 5000 之间唯一既是完全平方数又是完全立方数的数字。

下面程序中使用的方案如下

  • 我们取一个整数 N。

  • 函数 getCount(int n) 获取 N 并返回 1 到 N 之间既是完全平方数又是完全立方数的数字个数。

  • 将初始计数设为 0。

  • 从 i=1 到 i=N 开始,如果 floor(sqrt(i))==ceil(sqrt(i)),则 i 是一个完全平方数。

  • 现在检查 floor(cbrt(i))==ceil(cbrt(i)) 是否为真,如果为真,则 i 也是一个完全立方数。递增计数。

  • 在循环结束时,返回计数作为结果。

示例

实时演示

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int getCount(int n){
   int count=0;
   for(int i=1;i<=n;i++){
      if(floor(sqrt(i))==ceil(sqrt(i))){
         if(floor(cbrt(i))==ceil(cbrt(i))){
            count++;
            //cout<<i<<" ";
         }
      }
   }
   return count;
}
int main(){
   int N=100;
   cout<<endl<<"Numbers upto N that are perfect squares and perfect cubes:"<<getCount(N);
   return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

Numbers upto N that are perfect squares and perfect cubes:2

更新于: 2020-08-31

4K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告