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
主 編 | 張禎悅
責 編 | 江來洪