解:
设这个数是x,(x∈N*),设正整数a、b
令
x+100=a² ①
x+168=b² ②
②-①,得:b²-a²=68
(b+a)(b-a)=68
b+a、b-a同奇或同偶,又68是偶数,因此b+a、b-a同偶。
68>0,a>0,b>0,因此b-a>0,b>a
68分解为两个正偶数的乘积,只能分解为:68=2×34
b+a=34
b-a=2
解得a=16,b=18
x=a²-100=16²-100=156
该数是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是算数平方根,前面虽然定义了long int,但上面的最后两行却没有强制定义取整,因此无法算出正确结果。
3、建议按上述过程,设三个量,放弃使用sqrt,重新按x+100=a²、x+168=b² 来考虑编程。