问题描述
该问题的原题描述为:本题要求对任意给定的正整数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 = 1 list = [] 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 += 1 if len(list) == 0: print('No Solution') |
最后让我们看一看运行效果
图1有解时的输出效果
图2无解时的输出效果
结语
对于python中的编程题,拿到问题不要慌张,首先要将其拆分成一些小问题,然后分步思考,最终得出答案。