python5_平方数学问题

2020-05-20  本文已影响0人  xyb_python

"""题目:

一个整数,它加上100后是一个完全平方数,

再加上168又是一个完全平方数,

请问该数是多少?"""

# 程序分析:

# i + 100 = x * x  i + 268 = y * y

# 程序源代码:

import math

for i in range(10000):

    x = int(math.sqrt(i + 100))

    y = int(math.sqrt(i + 268))

    if (x * x == i + 100) and (y * y == i + 268):

        print(i)

"""

上述程序的结果是不准确的,21,261,1581

所以要先确定这个数字的范围。

1. i + 100 = x * x  i + 268 = y * y

2. y*y - x*x = (y-x)*(y+x) = 168

3. y+x = a  y-x = b  a*b = 168

4. y=(a+b)/2 x=(a-b)/2 所以a+b和a-b都是偶数,a和b同奇偶,

5. a*b=168 表明必有一偶,所以a和b都是偶数

6. a和b都是>=2的偶数

7. a*b=168 b>=2,则1<a<168/2+1=85

8. 找到所有的a,就能找到所有的i

"""

for a in range(1, 85):

    if 168 % a == 0:  # 首先a要能被168整除

        b = 168 / a

        if a > b and (a + b) % 2 == 0 and (a - b) % 2 == 0:

            y = (a + b) / 2

            x = (a - b) / 2

            i = int(x * x - 100)

            print(i)

# 这个结果多了一个 -99

上一篇 下一篇

猜你喜欢

热点阅读