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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 天笑 中级黑马   /  2015-10-5 11:39  /  489 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

6 个回复

正序浏览
按我的代码运行出来是21,完全没有问题啊。
21+100=11*11;
21+268 = 17*17;
不用那么多判断吧
回复 使用道具 举报
  1. public class Demo7 {
  2.     public static void main(String[] args) {
  3.             double x = 1;
  4.             while(true){
  5.                     double y = Math.sqrt(x+100);
  6.                     //先判断x+100的平方根y是不是整数,是的话再判断x+100是不是完全平方数
  7.                     if(isInt(y) && y*y == x+100){
  8.                             double z = Math.sqrt(x+268);
  9.                             //还是先判断x+268的平方根z是不是整数,是的话再判断x+268是不是完全平方数
  10.                             if(isInt(z) && z*z == x+268){
  11.                                 System.out.println(x);
  12.                                 break;
  13.                             }else{
  14.                                     x++;
  15.                             }
  16.                     }else{
  17.                         x++;
  18.                     }

  19.             }
  20.     }
  21.     //判断是否整数
  22.     public static boolean isInt(double d)
  23.     {
  24.             Double db = new Double(d);
  25.             return db.intValue() == d;
  26.     }
  27. }
复制代码
回复 使用道具 举报
Math.sqrt()这个方法是求开方。好了,我科普完了。。
回复 使用道具 举报
完全平方数就是1*1,2*2,3*3这样的数,开方是两个一样的非负整数
回复 使用道具 举报
代码如下,仅供参考

public class Demo7 {
        public static void main(String[] args) {
                int x = 1;
                while (true) {
                double n = Math.sqrt(x + 268) - Math.sqrt(x + 100);
                        if (Math.floor(n) != n) {
                                x++;
                        }
                        else {
                                System.out.println(x);
                                break;
                        }
                }
        }
}
回复 使用道具 举报
用数学方法能,但是代码我不会这么去实现.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马