题目:一个正整数,它加上100后是一个完全平方数,再加上168后还是一个完全平方数;求这个正整数(范围小于100000)!
public class SquNumber
{
public static void main(String args[])
{
int number=0;
for(number=1;number<100000;number++)
{
if(Math.sqrt((double)(number+100))/Math.sqrt((double)(number+268))==
Math.sqrt(((double)(number+100))/((double)(number+268))))
{
System.out.print(number+"\t");
}
}

}
}
这是我写的代码,可是不知道怎么的结果好象不对!请大家帮我看看!

解决方案 »

  1.   


    public class Test {
    public static void main(String args[]) {
    for(long i=0; i<1000000; i++) {
    if((Math.sqrt(i+100)%1==0)&&(Math.sqrt(i+268)%1==0))
    System.out.println(i);
    }
    }
    }F:\javatest>java Test
    21
    261
    1581
      

  2.   

    public class Number {
    public static void main(String[] args) {
    int i;
    for (i = 0; i < 10000; i++) {
    if (((i + 100) % Math.sqrt(i + 100) == 0)
    && ((i + 268) % Math.sqrt(i + 268) == 0))
    System.out.println(i);
    }
    }
    }
      

  3.   

    public class Number {
    public static void main(String[] args) {
    int i;
    for (i = 0; i < 10000; i++) {
    if (((i + 100) % Math.sqrt(i + 100) == 0)
    && ((i + 268) % Math.sqrt(i + 268) == 0))
    System.out.println(i);
    }
    }
    }
      

  4.   

    A + 100 = x^2
    A + 168 = y^2x >= 10
    y >= 13(y+x)*(y-x) = 68 = 2 * 2 * 17y + x = 34
    y - x = 2y = 18
    x = 16A = 156
      

  5.   


    /*
     * 提供一个高效点的算法,还可以优化的,缩小i的范围。
     * 
     * m+100=x*x
     * m+268=y*y
     * (y+x)(y-x)=168
     * 
     * 10<x<168
     * */
    public static void main(String[] args) {
    for(int i=11;i<168;i++){
    int x=i*i-100;
    if(isSqrt(x+268)){
    System.out.println(x);
    }
    }
    }
    public static boolean isSqrt(int n){
    double d=Math.sqrt(n);
    int i=(int)d;
    return i*i==n;
    }