1 #題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
代碼:
<code> </code><code>3</code> <code>m </code><code>=</code> <code>int</code><code>(</code><code>input</code><code>(</code><code>'請輸入第一個正整數:'</code><code>))</code>
<code> </code><code>4</code> <code>n </code><code>=</code> <code>int</code><code>(</code><code>input</code><code>(</code><code>'請輸入第二個正整數:'</code><code>))</code>
<code> </code><code>5</code> <code>i </code><code>=</code> <code>1</code>
<code> </code><code>6</code> <code>j </code><code>=</code> <code>1</code>
<code> </code><code>7</code> <code>limax </code><code>=</code> <code>[]</code>
<code> </code><code>8</code> <code>li1 </code><code>=</code> <code>[]</code>
<code> </code><code>9</code> <code>li2 </code><code>=</code> <code>[]</code>
<code> </code><code>10</code> <code>li </code><code>=</code> <code>[]</code>
<code> </code><code>11</code> <code>while</code> <code>(i > </code><code>0</code> <code>and</code> <code>i < m </code><code>and</code> <code>i < n):</code>
<code> </code><code>12</code> <code>if</code> <code>(m</code><code>%</code><code>i </code><code>=</code><code>=</code> <code>0</code> <code>and</code> <code>n</code><code>%</code><code>i </code><code>=</code><code>=</code> <code>0</code><code>):</code>
<code> </code><code>13</code> <code>limax.append(i)</code>
<code> </code><code>14</code> <code>i </code><code>+</code><code>=</code> <code>1</code>
<code> </code><code>15</code> <code>print</code><code>(</code><code>'%d和%d的最大公約數為%d'</code><code>%</code><code>(m,n,</code><code>max</code><code>(limax)))</code>
<code> </code><code>16</code>
<code> </code><code>17</code> <code>while</code> <code>(j > </code><code>0</code><code>):</code>
<code> </code><code>18</code>
<code> </code><code>19</code> <code>li1.append(j</code><code>*</code><code>m)</code>
<code> </code><code>20</code> <code>li2.append(j</code><code>*</code><code>n)</code>
<code> </code><code>21</code> <code>for</code> <code>x </code><code>in</code> <code>li1:</code>
<code> </code><code>22</code> <code>for</code> <code>y </code><code>in</code> <code>li2:</code>
<code> </code><code>23</code> <code>if</code> <code>x </code><code>=</code><code>=</code> <code>y:</code>
<code> </code><code>24</code> <code>print</code><code>(</code><code>'%d和%d的最小公倍數是:%d'</code><code>%</code><code>(m,n,x))</code>
<code> </code><code>25</code> <code>j </code><code>=</code> <code>-</code><code>1</code>
<code> </code><code>26</code> <code>j </code><code>+</code><code>=</code> <code>1</code>
運作結果:
<code>[root@HK code_100]</code><code># python code_16.py </code>
<code>請輸入第一個正整數:</code><code>4</code>
<code>請輸入第二個正整數:</code><code>7</code>
<code>4</code><code>和</code><code>7</code><code>的最大公約數為</code><code>1</code>
<code>4</code><code>和</code><code>7</code><code>的最小公倍數是:</code><code>28</code>
<code>請輸入第一個正整數:</code><code>14</code>
<code>請輸入第二個正整數:</code><code>21</code>
<code>14</code><code>和</code><code>21</code><code>的最大公約數為</code><code>7</code>
<code>14</code><code>和</code><code>21</code><code>的最小公倍數是:</code><code>42</code>
<code>[root@HK code_100]</code><code># </code>
<code>請輸入第一個正整數:</code><code>40</code>
<code>請輸入第二個正整數:</code><code>60</code>
<code>40</code><code>和</code><code>60</code><code>的最大公約數為</code><code>20</code>
<code>40</code><code>和</code><code>60</code><code>的最小公倍數是:</code><code>120</code>
<code>[root@HK code_100]</code><code>#</code>
代碼分析:
<code> </code><code>3</code> <code>m </code><code>=</code> <code>int</code><code>(</code><code>input</code><code>(</code><code>'請輸入第一個正整數:'</code><code>)) </code><code>#接收第一個數</code>
<code> </code><code>4</code> <code>n </code><code>=</code> <code>int</code><code>(</code><code>input</code><code>(</code><code>'請輸入第二個正整數:'</code><code>)) </code><code>#接收第二個數</code>
<code> </code><code>11</code> <code>while</code> <code>(i > </code><code>0</code> <code>and</code> <code>i < m </code><code>and</code> <code>i < n): </code><code>#當i>0并且i<m并且i<n,最大公約數一定比這個數小</code>
<code> </code><code>12</code> <code>if</code> <code>(m</code><code>%</code><code>i </code><code>=</code><code>=</code> <code>0</code> <code>and</code> <code>n</code><code>%</code><code>i </code><code>=</code><code>=</code> <code>0</code><code>): </code><code>#如果一個數能被m和n同時整除</code>
<code> </code><code>13</code> <code>limax.append(i) </code><code>#将符合條件的數添加到清單limax</code>
<code> </code><code>14</code> <code>i </code><code>+</code><code>=</code> <code>1</code> <code>#i循環+1,當i不滿足while條件時跳出循環</code>
<code> </code><code>15</code> <code>print</code><code>(</code><code>'%d和%d的最大公約數為%d'</code><code>%</code><code>(m,n,</code><code>max</code><code>(limax))) </code><code>#格式化輸出最大公約數,limax清單中的最大的數就是m和n的最大公約數</code>
<code> </code><code>17</code> <code>while</code> <code>(j > </code><code>0</code><code>): </code><code>#确定循環條件</code>
<code> </code><code>19</code> <code>li1.append(j</code><code>*</code><code>m) </code><code>#建立list,為m的所有倍數</code>
<code> </code><code>20</code> <code>li2.append(j</code><code>*</code><code>n) </code><code>#建立list,為n的所有倍數</code>
<code> </code><code>21</code> <code>for</code> <code>x </code><code>in</code> <code>li1: </code><code>#周遊li1</code>
<code> </code><code>22</code> <code>for</code> <code>y </code><code>in</code> <code>li2: </code><code>#周遊li2</code>
<code> </code><code>23</code> <code>if</code> <code>x </code><code>=</code><code>=</code> <code>y: </code><code>#當兩個list中有一項相等時</code>
<code> </code><code>24</code> <code>print</code><code>(</code><code>'%d和%d的最小公倍數是:%d'</code><code>%</code><code>(m,n,x)) </code><code>#列印這個第一個出現的相等的數,這個數就是m和n的最下公倍數</code>
<code> </code><code>25</code> <code>j </code><code>=</code> <code>-</code><code>1</code> <code>#修改while判斷條件,跳出循環</code>
<code> </code><code>26</code> <code>j </code><code>+</code><code>=</code> <code>1</code> <code>#j循環+1,逐漸擴充清單</code>
<code></code>
本文轉自snc_snc 51CTO部落格,原文連結:http://blog.51cto.com/netsyscode/1746234,如需轉載請自行聯系原作者