一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
找出所有符合要求的整数。
数学分析:(目标:找到枚举范围)
设:符合要求的整数为 x; x+100 = z; 非负整数 i ; 所有完全平方数的集合为 N。
则: z∈N,z+168 ∈N
N 具体值为{ 1^2,2^2,3^2,…… }
由:i^2-(i-1)^2 = 2i-1 可知:N中两数差值不断增大。
从 2i-1 > 168 可得,i>=85时,i^2-(i-1)^2> 168。则 (z+168) 不属于{ 85^2,86^2,87^2,……}
综上有:(z+168)∈ { 1^2,2^2,3^2,…… ,84^2 }
根据特性:z∈ { 1^2,2^2,3^2,…… ,84^2 },(z+168)∈ { 1^2,2^2,3^2,…… ,84^2 }。
有java实现:
for (int i = 1; i < 85; i++) {
for (int j = 1; j < 85; j++) {
if((i*i+168)==(j*j)){
System.out.printf("%d\t",i*i-100);
}
}
}
// 所有满足条件的数是:-99 21 261 1581