A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© maxwell247 中级黑马   /  2015-9-26 18:32  /  286 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



从网上找到一份编程练习题,我决定将里面的题目全都做一遍。

/*
        题目:一个整数,它加上100后是一个完全平方数,加上168又是一个完全平方数,请问该数是多少? ?
*/

/*
        分析:题目没有给定整数的范围,暂定范围为10000以内。
        判断完全平方数,需要开方,用到Math.sqrt()方法。static double sqrt(double a) 返回正确舍入的 double 值的正平方根。
        --> sqrt()方法返回double,强转为int。
        判断该数开方取整的数再平方后和该数是否相等即可。
*/
class WanQuanPingFangShu {
        public static void main(String[] args) {
                System.out.println("10000以内的满足条件的数有:");
                for (int i=1; i<=10000; i++){
                        int pingFang_1=(int)(Math.sqrt(i+100));
                        int pingFang_2=(int)(Math.sqrt(i+168));
                        if(pingFang_1*pingFang_1==(i+100) && pingFang_2*pingFang_2==(i+168)){
                                System.out.println(i);
                        }
                }
        }
}
/*
        输出结果
        156
*/

/*-----------------------------------------------------------------*/
//在网上看到另外一种方式进行判断,感觉挺简洁的,学习下。
Math.floor(Math.sqrt(k+100))==Math.sqrt(k+100) && Math.floor(Math.sqrt(k+168))==Math.sqrt(k+168)

2 个回复

倒序浏览
class A {
        public static void main(String[] args) {
                for (int k=1;k<8 ;k++ ) {
                        if((double)(68-k*k)/(2*k) %1==0) {
                                System.out.println("k的值是"+k);
                        }
                }
        }
}
回复 使用道具 举报
阿秋 发表于 2015-9-28 22:39
class A {
        public static void main(String[] args) {
                for (int k=1;k

先将其计算:k*k+2*n*k=68
则  k的取值范围为1到7,保证n为整数即可
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马