题目描述
输入两个不大于10的9次方的正整数,输出其最大公约数。
输入
输入两个正整数m和n,数据之间用空格隔开。
输出
输出一个整数,表示m和n的最大公约数。
样例输入
4 6
样例输出
2
本题使用辗转相除法
,将大数作被除数,小数作除数,如果余数等于0,则除数即为最大公约数;若余数不为0,则将除数变为被除数(m=n),将余数变为除数(n = r),之后继续上面的运算,直至余数等于0
代码如下
#include<stdio.h>
int main()
{
int m,n,r;//定义余数r
int min;
scanf("%d %d",&m,&n);
if(n>m)//n大于m时,n和m进行交换
{
min = m;
m = n;
n = min;
}
r = m%n;//求余数
while(r!=0)//余数不等于0
{
m = n;
n = r;
r = m%n;
}
printf("%d",n);
return 0;
}