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

完全平方指用一个整数乘以自己例如1×1,2×2,3×3等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。完全平方数是非负数(下面会说到)。

灵巧的写法

这题最大的难点应该就是确定范围了,要是正着想不好确定,那就倒着思考

循环范围:

最小:
先求加上100再加上168后谁能开方,应为完全平方数从0开始,加上100能是完全平方数最小0,再加168那就最小就是168开方约13那就取12

最大:
我没找十分精确,99的平方与100的平方之差就大于168了所以不可能比100更大所以最大取99,有时间可以再求一下。

为什么要%1,因为Math.sqrt()得到的是一个double类型的要想看开方后是不是整数那就取模1看是不是0

package myself;/** * @Auther QY * @Date 2023/12/14 */public class Thirteen {    public static void main(String[] args) {        perfectSquare();    }    public static void perfectSquare() {        for (int i = 12; i < 100; i++) {            //这层看它减去168是不是还是平方数,也就是原数+100是不是平方数            if (Math.sqrt(Math.pow(i, 2) - 168) % 1 == 0) {//                如果是那就减去268得到原数                System.out.println((int) (Math.pow(i, 2) - 268));            }        }    }}

大众写法

public static void play() {    for (int x = -100; x < 100000; x++) {        if (Math.sqrt(x + 100) % 1 == 0) {            if (Math.sqrt(x + 268) % 1 == 0) {                System.out.println(x);            }        }    }}