#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
'''
'''
此题之关键,在于值的取值范围,所以在写代码前,要先弄清楚取值范围.
'''
def test1():
'''
x+100=n^2,x+100+168=m^2;
m^2-n^2=168;
(m+n)(m-n)=168;m+n=i;m-n=j;
i*j=168;由于奇奇还是得奇,所以i和j必有一个偶;
由m+n=i;m-n=j;得i-j=m+n-m+n=2n;i+j=m+n+m-n=2m;n=(i-j)/2;m=(i+j)/2;m,n都是整数,所以,i和j都能被2整除,所以i和j都是偶数
由于i*j=168,所以i和j是不等的,i!=j,假设j最小是-84,最大则是84,不过,由于-84-0和0-84情况重合,所以i和都取正数部份,所以j最小是2,最大是84,
又由于13的平方就是169,j一旦大于13,i的值也就<13,此时的i和j与j<13时其实是换位置了,也就是说j<13和j>13的情况是重合的,我们只需要取其中一半就行了.
由于2-13的范围远远小于13-84,
因此,2<=j<13,i=168/j,且i%2=0,(168/j)%2==0
'''
for j in range(2,13,2):
if (168/j)%2==0:
i=168/j
m = (i + j) / 2
n = (i - j) / 2
x = n * n - 100
print("符合要求的j:",j);#2,4,6,12
print("符合要求的x:",x);#1581,261,21,-99
test1()
python学习03:缩小范围取值
最新推荐文章于 2025-02-08 18:12:45 发布