当前位置:编程学习 > JAVA >>

IF 问题

原题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
        程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结      
        果满足如下条件,即是结果。
程序分析:
public class Prog13{
public static void main(String[] args){
int n=0;
for(int i=0;i<100001;i++){
if(isCompSqrt(i+100) && isCompSqrt(i+268)){
n = i;
break;
}
}
System.out.println("所求的数是:"+n);
}
//判断完全平方数
private static boolean isCompSqrt(int n){
boolean isComp = false;
for(int i=1;i<Math.sqrt(n)+1;i++){
if(n==Math.pow(i,2)){//n=i的平方 ?如何判断此数完全平方?
isComp = true;
break;
}
}
return isComp;
}
}

程序是没有什么问题 但是注释的地方不明白。 --------------------编程问答-------------------- n==Math.pow(i,2) 即判断 n == i 的平方。循环是i 从 1 到 根号 n. 这样可以判断次数为平方值。

=====

哥们是刚学吧,这个pow()方法c语言里面就有的 --------------------编程问答-------------------- pow(x,y)方法是求出  x的y次幂。
即相当于判断循环中某个数是完全平方数 --------------------编程问答-------------------- 这个isCompSqrt()方法,是判断参数n是否是一个完全平方数。
那么从1到根号n进行遍历,如果存在一个值平方等于n,说明n是完全平方数,标志位变为true,同时跳出循环返回标志位。
你也可以写成
if(n==i*i) --------------------编程问答-------------------- 无聊写了个

/**
 * 原题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
        程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结      
        果满足如下条件,即是结果。
        
 * 设所求数为x,有:
 * x^2 + a^2 = 100 -> add1 
 * x^2 + b^2 = 268 -> add1 + add2
 * 所以b^2 - a^2 = 168 -> add2
 * 
 * 故只需求出满足条件的a,b就可以求出x
 */

public class Test2 {
public static void main(String[] args) {
System.out.println("所求的数是:" + getValue(100, 168, 100000));
}

static int getValue(int add1, int add2, int max) {
int a = (int) Math.sqrt(add1);
int blow = (int) Math.sqrt(add1 + add2);
int bmax = (int) Math.sqrt(max);
while (blow <= bmax) {
int result = blow * blow - a * a;
if (result == add2) {
return blow * blow - (add1 + add2);
} else if (result < add2) {
++blow;
} else {
++a;
}
}
return -1;
}
}


补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,