题目:一个正整数,它加上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");
}
}
}
}
这是我写的代码,可是不知道怎么的结果好象不对!请大家帮我看看!
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");
}
}
}
}
这是我写的代码,可是不知道怎么的结果好象不对!请大家帮我看看!
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
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);
}
}
}
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);
}
}
}
A + 168 = y^2x >= 10
y >= 13(y+x)*(y-x) = 68 = 2 * 2 * 17y + x = 34
y - x = 2y = 18
x = 16A = 156
/*
* 提供一个高效点的算法,还可以优化的,缩小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;
}