#include<stdio.h>
int fuction1(int n,int m);
int fuction2(int n,int m);
int main()
{
int m,n;
printf("please input m and n:");
while(scanf("%d %d",&m,&n)==2){
printf("fuction1\n");
printf("%d和%d最大公约数为%d",m,n,fuction1(m,n));
printf("\nfuction2\n");
printf("%d和%d最大公约数为%d",m,n,fuction2(m,n));
printf("\nplease input another m and n:");
}
return 0;
}
int fuction1(int n,int m)//辗转相除法
{
int temp;
if(n<m){
temp=n;
n=m;
m=temp;
}
while(n%m!=0){
n=n%m;
if(n<m){
temp=n;
n=m;
m=temp;
}
}
return m;
}
int fuction2(int n,int m)//更相减损法
{
int temp;
if(n<m){
temp=n;
n=m;
m=temp;
}
int count=1;
while(n%2==0&&m%2==0){
n/=2;
m/=2;
count*=2;
}
while(m!=(n-m)){
n=n-m;
if(n<m){
temp=n;
n=m;
m=temp;
}
}
return m*count;
}
最大公约数
最新推荐文章于 2022-07-10 20:23:23 发布