多语言展示
当前在线:1651今日阅读:84今日分享:32

用python求解简单的数论问题

简单的数论问题,指的是可以通过枚举法来解答的。在python里面,可以通过for循环实现枚举法。
工具/原料
1

电脑

2

python3+

方法/步骤
1

求不定方程x^2+y^2=1049的所有正整数解。

3

不定方程:a^2+b^2+c^2=2018其中,a不大于b,b不大于c。求满足条件的正整数a、b、c。

4

在范围上限制后面的变量:for a in range(1,45):    for b in range(a,45):        for c in range(b,45):            if a**2+b**2+c**2==2018:                print(a,b,c)

5

再试试另一个问题,题目如图所示。

6

这个问题用枚举法是不行的:c = []for a in range(1,10000):    for b in range(a+1,10000):        q = int((a**2+b**2)/(a+b))        r = int((a**2+b**2)%(a+b))        if q**2+r==2018:            print(a,b)            c.append(a)if len(c)==0:    print('10000以内,满足要求的a和b不存在!')

注意事项

第三个问题,需要无限枚举。也就是说,枚举法并不能证明这个问题无解。

推荐信息