简单的数论问题,指的是可以通过枚举法来解答的。在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不存在!')
注意事项
第三个问题,需要无限枚举。也就是说,枚举法并不能证明这个问题无解。
上一篇:python有什么优缺点?
下一篇:PHP程序员面试技巧之口试题分享