//一个整数,它加上100后是一个完全平方数,
//再加上168又是一个完全平方数,请问该数是多少?
import java.util.*;
public class Test8{
public static void main(String[] args){
/*
可以用数学办法算出来
x+100=a*a .....1
x+168=b*b .....2
2-1:
68=(b+a)(b-a)
因为68=68*1=34*2=17*4
又因为b+a b-a奇偶性相同
所以b+a=34 b-a=2 所以a=16
所以x=156
*/
int x=-1;//存放未知数x;
int cha=68;//存放差值
int a=-1;//存放a的值
for(int i=0;i<(getYinshu(cha).size()+1)/2;i++){
//获取等于差值的俩因数
int zuo=getYinshu(cha).get(i);
int you=getYinshu(cha).get(getYinshu(cha).size()-1-i);
//因数奇偶性相同
if(isEqual(zuo,you)){
a=(you-zuo)/2;
x=a*a-100;
break;
}
}
System.out.println("一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?\n该数为:"+x);
}
//判断两个数奇偶性是否相同的函数
public static boolean isEqual(int a,int b){
return (a%2-b%2)==0;
}
//获取某个整数的所有因数
public static ArrayList<Integer> getYinshu(int n){
ArrayList<Integer> yinshu=new ArrayList<Integer>();
for(int i=1;i<=n;i++){
if(n%i==0)
yinshu.add(i);
}
return yinshu;
}
}
