一.穷举法求最小公倍数
#include<stdio.h>
int main()
{
int a,b,min=0;
printf("Input the number a&b:");
scanf("%d,%d",&a,&b);
printf("\n");
if (a>=b) min=a;
if (b>a) min=b;
while(1)
{
if(min%a==0&&min%b==0)
{
printf("最小公倍数是:%d",min);
break;
}
min++;
}
return 0;
}
二.求最大公约数
1.穷举法
#include<stdio.h>
int main()
{
int a,b,max=0;
printf("Input the number a&b:");
scanf("%d,%d",&a,&b);
printf("\n");
if (a<=b) max=a;
if (a>b) max=b;
while(1)
{
if(a%max==0&&b%max==0)
{
printf("最大公倍数是:%d",max);
break;
}
max--;
}
return 0;
}
2.欧几里得算法
#include<stdio.h>
int main()
{
int a,b,tran,max=0,r;
printf("Input the number a&b:");
scanf("%d,%d",&a,&b);
printf("\n");
if (a<b)
{tran=a;a=b;b=tran;}
r=a%b;
do
{
a=b;
b=r;
r=a%b;
}while(r!=0);
printf("最大公约数为:%d",b);
return 0;
}
3.递归法
#include<stdio.h>
#include<math.h>
int Left(int a,int b);
int Min(int a, int b) //得到更小的数值
{
if (a>b) return b;
else return a;
}
int Left(int a,int b)
{
if(a==b) return b;//当a=b时,a或b就是最大公约数
if(a!=b) Left(fabs(a-b),Min(a,b)/*看a-b的值和小的数值是否相等*/);
}
int main()
{
int a,b;
printf("请输入a和b的值:");
scanf("%d,%d", &a,&b);
printf("\n");
printf("最大公约数为:%d\n",Left(a,b));
return 0;
}