天天看点

【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,如需转载请自行联系原作者