/* Note:Your choice is C IDE */
#include "stdio.h"
#define SWAP(a,b) do{\
a=(a)^(b);\
b=(a)^(b);\
a=(a)^(b);\
}while(0)
int gcd(int a,int b)
{
int temp;
if(a<b)/*交换两个数,使大数放在a上,这样可以少一个循环运算*/
{
/* temp=a;
a=b;
b=temp;*/
SWAP(a,b);
}
while(b!=0)/*利用辗除法,直到b为0为止*/
{
temp=a%b;
a=b;
b=temp;
}
return a;
}
int gcd1(int a,int b)
{
int temp;
while(b!=0)/*利用辗除法,直到b为0为止*/
{
temp=a%b;
a=b;
b=temp;
}
return a;
}
int gcd2(int a,int b)//递归实现
{
if(0==b)
return a;
else
return gcd2(b,a%b);
}
int min_beishu(int a, int b)
{
int mul=a*b;
int temp=0;
if(a<b)//交换;
{
a=a^b;
b=a^b;
a=a^b;
}
while(b!=0)
{
temp=a%b;
a=b;
b=temp;
}
//printf("最小公倍数为:%d,最大公约数为:%d\n",mul/a,a);
return mul/a;
}
int min_three_beishu(int a,int b,int c){
return min_beishu(min_beishu(a,b),c);
}
void main()
{
int a=4;
int b=8;
int d=6;
// int c=min_three_beishu(a,b,d);
int c=gcd2(6,4);
printf("%d\n",c);
}
最大公约数(递归与非递归实现),最小公倍数
最新推荐文章于 2023-03-31 12:29:20 发布