int main(){ long int i,x,y;for(i = -100;i <= maxSize;++i){ x = sqrt(i+100);y = sqrt(i+268);//再加上168,即i+100+168 if((x*x == i + 100)&&(y*y == i+268))printf("%ld\t",i);} return 0;}
include<math.h> void main(){ int i=1;int n,m;for (i=1;i<100000;i++){ m=sqrt(100+i);n=sqrt(268+i);if(m*m==i+100)if(n*n==i+268)printf("%ld",i);}}1581
{ m=sqrt(100+i);n=sqrt(268+i);if(m*m==i+100)if(n*n==i+268)printf("%ld",i);}}1581
n=sqrt(268+i);if(m*m==i+100)if(n*n==i+268)printf("%ld",i);}}1581
include<stdio.h> include<math.h> int main(){int i;for(i=1;;i++)if((int)(sqrt(i+100)+1e-4)*(int)(sqrt(i+100)+1e-4)==i+100)if((int)(sqrt(i+168)+1e-4)*(int)(sqrt(i+168)+1e-4)==i+168)break;printf("%d\n",i);return 0;} ...
x+100=m*m x+268=n*n 则有(n-m)*(n+m)=168=1*2*2*2*3*7 m+n<=168 n>m for(m=11;m<=168;m++){ for(n=m+1;n<168;n++){ if((n-m)*(n+m)==168){ x=m*m-100;sprintf("%d\n",x);} } }
因为float类型的数据,如果不是完全平方数,开平方后是有小数位数的。而不像我们数学问题上的,公式等价。在C语言中,float类型的数据,开平方后再相乘是不等价的。请看例子:include "stdio.h"include "math.h"main(){float n,x,y;printf("\n");scanf("%f",&n);/*输入一个数给n*/ x=...
解题过程如下:include<stdio.h> include<math.h> void main(){ int i=1;int n,m;for (i=1;i<100000;i++){ m=sqrt(100+i);n=sqrt(268+i);if(m*m==i+100)if(n*n==i+268)printf("%ld",i);}}1581
问题:一整数,它加100后是完全平方数,再加168还是完全平方数,求该整数解题思路:设该数为x,它加100后是A,再加168为B。则因为A是完全平方数,所以A为正数,且A=y*y,y为正整数或0。同理,B为正数,B=z*z,z为正整数。因为B=A+168>A,所以,我们可设z=y+n,n为正整数,n>0。由B=A+168,有:(y+n)(...
该数是156。C语言对编程者的要求相对较低,书写比较自由,因此不提示错误,很正常。long int i,m,n ;for (i=1;i<100000;i++){ n=sqrt(100+i);m=sqrt(268+i);1、不用取1到100000,量太大了。事实上只有一个解,就是156。初二的知识就可以解决。2、m、n是算数平方根,前面虽然定义了...