天天看點

【python】程式設計語言入門經典100例--16

  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 &gt; </code><code>0</code> <code>and</code> <code>i &lt; m </code><code>and</code> <code>i &lt; 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 &gt; </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 &gt; </code><code>0</code> <code>and</code> <code>i &lt; m </code><code>and</code> <code>i &lt; n):                </code><code>#當i&gt;0并且i&lt;m并且i&lt;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 &gt; </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,如需轉載請自行聯系原作者