辗转相除法的原理:
已知两个正整数m与n,m%n=r,则m与n的最大公约数等于n与r的最大公约数。
1.代码一:
#include<stdio.h>
int main(){
int m, n, r=1;
scanf( "%d %d", &m, &n );
while ( m%n != 0 ){
r = m%n;
m = n;
n = r;
}
printf( "%d", n );
return 0;
}
2.代码二
由辗转相除法的原理可以用一个递归函数来实现,代码如下:
#include<stdio.h>
int func( int m, int n ){
if ( m%n == 0 ) return n;
else return func( n, m%n );
}
int main(){
int m, n;
scanf( "%d %d", &m, &n );
printf( "%d与%d的最大公约数为%d", m, n, func( m, n ) );
return 0;
}