Problem E: 最大公约数(while循环)
Memory Limit:128 MB
Time Limit:1.000 S
Judge Style:Text Compare
Creator:
Submit:20
Solved:17
Description
求两个正整数m和n的最大公约数。
Input
输入2个正整数
Output
输出最大公约数
Sample Input Copy
15 25
Sample Output Copy
5
HINT
最大公约数:几个整数中公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。
例如:12、16的公约数有1、2、4,其中最大的一个是4,4是12与16的最大公约数,一般记为(12,16)=4。12、15、18的最大公约数是3,记为(12,15,18)=3。
算法分析:
求两个正整数的最大公约数采用数学中的辗转相除法,以下是辗转相除法:
分别用m,n,r表示被除数、除数和余数。
1、求m除以n的余数r;
2、若r等于0,则n为最大公约数,输出n并结束程序;若r不等于0,执行第3步;
3、将n的值赋给m,将r的值赋给n;
4、返回重新执行第1步。
例如:12、16的公约数有1、2、4,其中最大的一个是4,4是12与16的最大公约数,一般记为(12,16)=4。12、15、18的最大公约数是3,记为(12,15,18)=3。
算法分析:
求两个正整数的最大公约数采用数学中的辗转相除法,以下是辗转相除法:
分别用m,n,r表示被除数、除数和余数。
1、求m除以n的余数r;
2、若r等于0,则n为最大公约数,输出n并结束程序;若r不等于0,执行第3步;
3、将n的值赋给m,将r的值赋给n;
4、返回重新执行第1步。