题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
方法一:暴力枚举法
#include <stdio.h>
#include <math.h>
//题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
int main()
{
int x,m,n;
for (x = -100;x < 10000;x++)
{
double sqrt_m = sqrt(x + 100);
double sqrt_n = sqrt(x + 268);
m = (int)sqrt_m;
n = (int)sqrt_n;
if (sqrt_m == m && sqrt_n == n)
{
printf("满足条件的整数是:%d\n", x);
}
}
return 0;
}
以下是代码运行结果:
方法二
int a, b; // 因数对(a, b)满足a*b=168且a <= b
int n, m; // 平方数的底数n和m
int x; // 待求解的整数
printf("满足条件的整数x有:\n");
// 遍历所有可能的因数a(a的范围:1到√168,确保a <= b)
for (a = 1; a <= (int)sqrt(168); a++) {
if (168 % a == 0) { // 找到168的因数对(a, b)
b = 168 / a;
// 关键条件:a和b必须同奇偶,保证n和m为整数
if ((a % 2) == (b % 2)) {
n = (a + b) / 2; // 由n = (a + b)/2推导
m = (b - a) / 2; // 由m = (b - a)/2推导
// 确保m和n为正整数(平方数非负)
if (m > 0 && n > 0) {
x = m * m - 100; // 由x = m² - 100推导
printf("x = %d (对应m=%d, n=%d)\n", x, m, n);
}
}
}
}
以下是运行结果
本网站原创文章版权归何大锤的狂飙日记所有。发布者:何大锤,转转请注明出处:何大锤的博客