请问一道编程题?
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:
2.程序源代码:
#include "math.h"
main()
{
long int i,x,y,z;
for (i=1;i<100000;i++)
{ x=sqrt(i+100); /*x为加上100后开方后的结果*/
y=sqrt(i+268); /*y为再加上168后开方后的结果*/
if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
printf("\n%ld\n",i);
}
}
-------------------------------------------------------
但是在java中提供的是Math.sqrt(double i);i只有double型,若按上述算法,不能得到正确结果,请问怎样才能解决呢?谢谢!
问题点数:20、回复次数:2Top
1 楼RainRainbow()回复于 2006-03-20 13:02:52 得分 10
public static void main(String[] args) {
int i = 0, x, y;
while (true) {
x = (int) Math.sqrt(i + 100);
y = (int) Math.sqrt(i + 268);
if ((x * x == i + 100) && (y * y == i + 268)) {
System.out.println(i);
break;
}
i++;
}
}Top
2 楼andycpp(幻瞳)回复于 2006-03-20 13:22:47 得分 10
你的思路完全错误,绝对不能开根号.
int temp;
int i;
a1: for(i=1;true;i++){
temp = 0;
for(int j=2*i+1;true;j+=2){
temp += j;
if(temp == 68)
break a1;
if(temp > 68)
break;
}
}
System.out.println(i*i-100);
这是个java程序,最终算出的结果是156Top




