你能做的怎么样?试试吧:)
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 互相帮助,交流一下;楼一和楼二思想都是一致的,即都采用了固定范围的遍历,逐一去验证,这也是一种方法,但缺点也是明显的,首先不能保证求得所有解,其次是运行效率低。
这个问题从数学角度再分析一下,发掘数学最基本的东西,才是编程前最应该思考的。
下面我把自己和室友的代码都发上来,大家参考,欢迎交流(我室友就是EastSun,版主)
/**问题分析
*设这个正整数是m
*则有题意知:a*a=m+100 (1)
* b*b=m+268 (2)
*(2)-(1)得:(b-a)*(b+a)=168
*b>=17显然。且(b-a)与(b+a)均同为偶数
*/
public class SolutionTo{
public static void main(String[] args){
int m=2;
while(m<168){
if(168%m==0){
if((168/m)%2==0){
int b=(168/m+m)/2;
if(b<=16) break;
else
System.out.println(\"It's:\"+(b*b-268));
}
}
m=m+2;
}
}
}
室友的
* 由 x +100 =n^2
* x +268 =(n+k)^2
* 得: 168 =k*(2n+k)
* 进一步知: k =2m (k为偶数)
* 从而:
* 42 = m*(n+m)
*其中: m>=1,n>=10
*/
public class SolveNumber{
public static void main(String[] args){
int m =1,n;
while(true){
if(42%m==0){
n =42/m -m;
if(n<10) break;
System.out.println(\"result :\"+(n*n-100));
}
m ++;
}
}
}