自然数的平方数是:1 4 9 16 25 …
自然数的立方数是:1 8 27 64 125 …
自然数的4次方数是:1 16 81 256 …
…
这些数字都可以称为次方数。
1~10000中,去掉所有的次方数,还剩下多少个数字?
参考答案:
9875
因为有很多不相同的数,但是他们的某个次方可能相同,比如2^4和4^2,所以不能遇到符合条件的就统计,我的方法是开一个10001的数组,给每一个数一个标记,假如计算出一个次方数,就将其标记一下,最后统计没有被标记的数,因为从平方开始,所以数值最大100,而2^14=16384,所以次方最大到14就行
#include<iostream>
#include<cmath>
using namespace std;
int sum[10001]={0};
int main()
{
long long i,j;
for(i=1;i<=100;i++)
{
for(j=2;j<=14;j++)
{
if((int)pow(i,j)<=10000)
sum[(int)pow(i,j)]=1;
if(pow(i,j)>10000)
break;
}
}
j=0;
for(i=1;i<=10000;i++)
{
if(sum[i]==0)
j++;
}
cout<<j;
return 0;
}