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