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

主 編 | 張禎悅

責 編 | 江來洪