今天看啥  ›  专栏  ›  小恐龙的日常

Python求解几个整数问题

小恐龙的日常  · 简书  ·  · 2020-10-21 07:56

可以编程如下:

b = -100

for i in range(200):

b = b + 1

a = -100

for i in range(200):

a = a + 1

if a * a - b * b == 89:

print('(a,b)'+'='+'('+str(a)+','+str(b)+')')

print('OVER')

结果显示为:

(a,b)=(-45,-44)

(a,b)=(45,-44)

(a,b)=(-45,44)

(a,b)=(45,44)

OVER

这个题目稍难些,数学方法可以这样做:

可以看出a+b=48,且a-b=16,故a=32,b=16。这种做法比较巧妙,不过不能深想,因为有些细节不好解释清楚,可以用无理数与有理数的关系,也可以用到一点儿比较高深的知识,比如线性代数里面的线性组合。

现在我们换个思路,用编程的思想来解决这个问题(这也是科技发展的必然趋势):

m = 0

n = 0

number1 = m + n

number2 = m - n

import math

for i in range(100):

n = n + 1

m = n

for i in range(100):

m = m + 1

number1 = m + n

number2 = m - n

if math.sqrt(m+n) + math.sqrt(number2) == 4 * math.sqrt(3)+4:

print('m='+str(m))

print('n='+str(n))

结果如下:

m=32

n=16

这个题目跟问题2有些近似,编程如下:

import math

x = 0

y = 0

for i in range(100):

x = x + 1

y = x

for i in range(100):

y = y + 1

if abs(math.sqrt(x) + math.sqrt(y) - math.sqrt(72)) < 1.0e-14:

print('('+str(x)+','+str(y)+')')

print('OVER')

结果显示为:

(2,50)

(8,32)

OVER


喜欢的话请关注微信公众号:迷你恐龙的博客,公众号中有更多好玩的文章呦!




原文地址:访问原文地址
快照地址: 访问文章快照