一数三平方
有这样一个六位数,它本身是一个整数的平方,其高三位和低三位也分别是一个整数的平方,如225625=475*475,225=15*15,625=25*25;统计所有符合该条件的六位数
源代码:
- #include<stdio.h>
- #include<math.h>
- int ss(int value);
- int main(void)
- {
- long i,j,n1,n2,k;
- for(i=100000;i<=999999;i++)
- {
- j=(long)sqrt(i);
- if(j*j==i)
- {
- n1=i/1000;
- n2=i%1000;
- j=(long)sqrt(n1);
- k=(long)sqrt(n2);
- if(j*j==n1&&k*k==n2)
- printf("%ld,",i);
- }
- }
- printf(" ");
- return 0;
- }
效果图:
程序分析:
sqrt()函数,其语法格式如下 double sqrt(double num);
该函数的作用是返回参数num的平方根,可以发现sqrt的返回值是一个double类型,程序中将sqrt的返回值强制转换成长整型,这样会使开平方后得到的小数失去其小数点后面的部分,那么,再对这个强制转换后的数再平方,所得结果将不会等于原来开平方前的数。若开平方后得到的小数其小数点后的部分为0,则将其强制为长整型也不会产生数据流失,那么再对这个强制转换后的数再平方所得的结果将等于原来开平方前的数。利用这个方法就可以很好的判断出一个数开平方后得到的数是否是整数。