python|求方程X2+Y2=N的全部正整数解
- 2019 年 12 月 17 日
- 筆記
问题描述
该问题的原题描述为:本题要求对任意给定的正整数N,求方程X2+Y2=N的全部正整数解。给定的N<=10000,如果本题要求对任意给定的正整数N,求方程X2+Y2=N的全部正整数解。给定的N<=10000,如果有解请输出全部解,如果无解请输出No Solution。有解请输出全部解,如果无解请输出No Solution。
解决方案
首先分析题目,可知其为二元二次方程式,要是让我们自己来解基本不可能,
所以只能通过程序来解决。对于这种两个未知数的我们可以分别让他们从1开始遍历每一个正整数,直至找出所有解。
(1)先让x,y遍历每一个正整数
(2)设置输出所有解后停止循环的条件
(3)最后加上无解时输出No Solution的条件
将问题拆分分析后,将所有代码按程序输入,最后的代码如下。
x = 1list = []while True: for y in range(1,x+1): s = x**2+y**2 if s == N: print(x,y) list.append((x,y)) if x**2>N: break x += 1if len(list) == 0: print('No Solution') |
---|
最后让我们看一看运行效果

图3.1有解时的输出效果

图3.2无解时的输出效果
对于python中的编程题,拿到问题不要慌张,首先要将其拆分成一些小问题,然后分步思考,最终得出答案。
END
主 编 | 张祯悦
责 编 | 江来洪