题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?
题目:一个整数,它加上 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);
}
}
}
}