一个整数(0-10000),它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

#include <stdio.h>
#include <math.h>
main()
{
long int i,m,n
;
for (i=1;i<100000;i++)
{
n=sqrt(100+i);
m=sqrt(268+i);
if(n*n==i+100&&m*m==i+268)
printf("%ld\n",i);

}

}
能编译通过 ,可是没有任何显示,就结束 了。这是为什么?

解:
设这个数是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² 来考虑编程。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网