【确定全部这样的正整数对(a,b),即,a

【确定所有这样的正整数对(a,b),即,a<b<1000且(a平方+b平方+1)/(ab)是整数】
	/**
	 * 
	 *  @author tanx
	 *  @create 2011-10-8 下午3:42:25
	 *  @since 确定所有这样的正整数对(a,b),即,a<b<1000且(a平方+b平方+1)/(ab)是整数
	 *  @param
	 *  @return
	 */
	public static boolean confirmNums(int a, int b){		
		if(a<b&&b<1000){
			int c = (a*a+b*b+1)/(a*b);
			if((a*b*c)!=(a*a+b*b+1)){
				return false;
			}			
		}else{
			return false;
		}		
		return true;
	}



下面是别人的帮助解答,感谢fp1203
引用

其实只要证明(a^2+b^2+1)/(a*b)=3就可以了:
令(a^2+b^2+1)/(a*b)=k
则有b^2-(ka)b+(a^2+1)=0 => delta=k^2 * a^2 - 4 * (a^2+1)
因为要整除,所以delta肯定为平方数,令delta=t^2
则k^2*a^2-t^2=4*a^2+4 => (ka+t)(ka-t)=4(a^2+1)
有下面几种可能的情况:
1)ka+t=4,ka-t=a^2+1 或者 ka+t=a^2+1,ka-t=4
   则有a^2-(2k)a+5=0 => delta1=4k^2-4*5=4(k^2-5)
   同样delta1为平方数,即k^2-5为平方数,令k^2-5=r^2
   则有(k+r)(k-r)=1*5,即k+r=5,k-r=1,即k=3
   第一种情况证毕
2) ka-t=2,ka+t=2(a^2+1) (ka-t不可能等于2(a^2+1),因为ka+t>ka-t)
   则有a^2-ka+2=0 => delta2=k^2-8
   delta2为平方数,令k^2-8=m^2,则(k+m)(k-m)=8=2*4
   则(k+m)+(k-m)=2+4=6,即k=3
   第二种情况证毕
3)假设(a^2+1)含因子s
   则有 (ka+t)+(ka-t)=4s+(a^2+1)/s
   即a^2-(2sk)a+(4s^2+1)=0 (式1) => delta3=4(s^2*k^2-4s^2-1)
   delta3为平方数,令s^2k^2-4s^2-1=n^2
   则(sk+n)(sk-n)=4s^2+1
   3.1) (sk+n)+(sk-n)=4s^2+1+1 => k=(2s^2+1)/s=2s+1/s =>当且仅当s=1时,满足k为整数且k=3
   3.2) 假设4s^2+1含因子i,则有 (sk+n)(sk-n)=y+(4s^2+1)/y
        即y^2-(2sk)y+(4*s^2+1)=0 与(式1)完全一样,因此这个步骤可以一直进行下去,当4s^2+1已
        不能再分解时,就只可能是3.1对应的步骤,故,第三种情况证毕


PS:第三种情况可能有点难理解,其实有点像数学归纳法