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

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

由题意我们可以设该数为 x ,加100后得到的完全平方数为 y 2 ,再加168后得到的完全平方数为  z^2 ,则有

image.png

即得:

image.png

这里分为四种情况:

y>0,z>0

y > 0 , z < 0

y < 0 , z > 0

y < 0 , z < 0

若要得到 ( z + y ) ( z − y ) = 168 (z+y)(z-y)=168 (z+y)(z−y)=168,那么以上四种情况可以归为两类:

0<(z+y)<168,0<(z−y)<168

− 168 < ( z + y ) < 0 , − 168 < ( z − y ) < 0

下面两个图是 y 、 z、 z + y、 z − y 的值域示意图,左图为168=z^2-y^2 ,右图为 ( z + y ) ( z − y ) = 168

image.png

实际上,无论 y与 z取何值,最终都能得到 2 y^2+168=z^2 y

image.png

这里设 y 与 z都取正值,则 z + y 、 z − y也为正值且其值大于 0小于等于 168。


另,由于:


x+100=y20


因此可得 x ⩾ − 100


所以我们可以利用的条件就是:


image.png


实现代码如下:


#include "stdio.h"
#include "math.h"
int main(void)
{
  int x = -100;
  double y = 0, z = 0;
  // y+,z+,0<(z+y)<168,0<(z-y)<168
  do {
  y = sqrt(x + 100);
  z = sqrt(x + 100 + 168);
  if (y == (int)y && z == (int)z)
    printf("%d\n", x);
  x++;
  } while ((z + y) > 0 && (z + y) <= 168);
  /*
  * y与z的另外三种取值,其结果与y+,z+一致
  *
  // y-,z-,-168<(z+y)<0,-168<(z-y)<0
  do{
  y = -sqrt(x + 100);
  z = -sqrt(x + 100 + 168);
  if (y == (int)y && z == (int)z)
    printf("%d\n", x);
  x++;
  } while ((z + y) >= -168 && (z + y) < 0);
  // y+,z-,-168<(z+y)<0,-168<(z-y)<0
  do {
  y = sqrt(x + 100);
  z = -sqrt(x + 100 + 168);
  if (y == (int)y && z == (int)z)
    printf("%d\n", x);
  x++;
  } while ((z + y) >= -168 && (z + y) < 0);
  // y-,z+,0<(z+y)<168,0<(z-y)<168
  do {
  y = -sqrt(x + 100);
  z = sqrt(x + 100 + 168);
  if (y == (int)y && z == (int)z)
    printf("%d\n", x);
  x++;
  } while ((z + y) > 0 && (z + y) <= 168);
  *
  *
  */
  return 0;
}


计算结果为:-99、21、261、1581

相关文章
|
6月前
|
人工智能 网络协议 BI
PTA-求10个整数中的偶数的和
求10个整数中的偶数的和
46 0
|
10天前
求一个整数的所有因数
【10月更文挑战第25天】求一个整数的所有因数。
11 5
|
22天前
两数相除,如果有余数,输出余数
【10月更文挑战第13天】两数相除,如果有余数,输出余数。
30 4
|
2月前
|
存储 C语言
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
51 4
|
6月前
|
算法
容斥原理:能被整除的数
容斥原理:能被整除的数
|
2月前
将一个正整数分解质因数
将一个正整数分解质因数。
59 8
|
6月前
|
机器学习/深度学习
完全平方数
完全平方数.。
50 0
|
6月前
38.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
38.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
62 0
求一个数是几位数并输出逆序数
求一个数是几位数并输出逆序数
63 0
|
6月前
|
C++
有效的完全平方数(C++)
有效的完全平方数(C++)
62 0