问题描述
该问题的原题描述为:本题要求对任意给定的正整数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')
最后让我们看一看运行效果
图3.1有解时的输出效果
图3.2无解时的输出效果
对于python中的编程题,拿到问题不要慌张,首先要将其拆分成一些小问题,然后分步思考,最终得出答案。
END主 编 | 张祯悦
责 编 | 江来洪
where2go 团队
微信号:算法与编程之美
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。