(C)
#包括<stdio.h>
#包括<math.h>
整型main(){
无符号long long a,i,t;
对于(i=0;i<(1L<<32)-2++i){
a=(i*i)^((i+1)*(i+1));
t=平方英尺(a);
如果(a!=t*t)继续;
a=(i*i)^((i+2)*(i+2中));
t=平方英尺(a);
如果(a!=t*t)继续;
printf(“%llu,”,i);
}
返回0;
}
(Java)
静态公共BigInteger isqrt(最终BigIntiger n)
{
if(n.compareTo(BigInteger.ZERO)<0)
抛出新的ArithmeticException(“负参数”+n.toString());
大整数x;
final int bl=n.bitLength();
如果(bl>120)
x=n.右移(bl/2-1);
其他的
{
最终双结果=Math.sqrt(n.doubleValue());
x=新的BigInteger(“”+Math.round(结果));
}
final BigInteger two=新的BigIntiger(“2”);
while(真)
{
大整数x2=x.pow(2);
BigInteger xplus2=x.add(BigIntiger.ONE).pow(2);
如果(x2.compareTo(n)<=0&&xplus2.compareTo(n)>0)
返回x;
xplus2=xplus2.减法(x.shiftLeft(2));
如果(xplus2.compareTo(n)<=0&&x2.compareTo(n)>0)
return x.subtract(BigInteger.ONE);
xplus2=x2.减法(n).除法(x).除数(2);
x=x减去(xplus2);
}
}
静态公共void main(String[]argv)
{
for(BigInteger k=BigIntiger.ZERO;;k=k.add(BigInteger.ONE))
{
最终BigInteger k2=k.pow(2);
final BigInteger kplus1=k.add(BigIntiger.ONE);
最终大整数k12=kplus1.pow(2);
最终大整数xor1=k2.xor(k12);
最终BigInteger roo1=isqrt(xor1);
如果(roo1.pow(2).compareTo(xor1)==0)
{
final BigInteger k22=kplus1.add(BigIntiger.ONE).pow(2);
最终大整数xor2=k2.xor(k22);
最终BigInteger roo2=isqrt(xor2);
if(roo2.pow(2).compareTo(xor2)==0)
System.out.println(k);
}
}
}
}
|