#include<stdio.h>
#include<math.h>
int select=1;//select为是否退出程序的标志
//辗转相除法
void zhanzhuan()
{
int a,b,c,p;//定义变量类型
printf("请输入两个正整数:\n");
scanf("%d%d",&a,&b);//从键盘输入两个数
c=a%b;//取余
p=a*b;
while(c!=0)
{
a=b;
b=c;
c=a%b;//用小的数除以大的数
}
printf("最大公约数为:");
printf("%d\n",b);
printf("最小公倍数为:");
printf("%d\n",p/b);
}
//相减法
void xiangjian()
{
int a,b,p;//定义变量类型
printf("请输入两个正整数:\n");
scanf("%d%d",&a,&b);//从键盘中输入两个数
p=a*b;
while(a!=b)
{
if(a>b)//判断两个数的大小
a-=b;
else b-=a;
}
printf("最大公约数为:");
printf("%d\n",b);
printf("最小公倍数为:");
printf("%d\n",p/b);
}
//穷举法
void qiongjv()
{
int a,b,d,i,p,q,m;//定义变量类型
printf("请输入两个正整数:\n");
scanf("%d%d",&a,&b);//从键盘中输入两个数
m=a*b;
if(a>b)
{d=b;
b=d;
d=a;//取两个数中的较小数
}
i=a;
p=1;q=1;
while(p != 0)
{ i--;//数减小一
p=a%i;
q=b%i;
p=p+q;
}
printf("最大公约数为:");
printf("%d\n",i);
printf("最小公倍数为:");
printf("%d\n",m/i);
}
//用户界面
void menu()
{
int item;
printf("\n");
printf(" *********************************************************\n");
printf(" # #\n");
printf(" # 求两整数最大公约数与最大公倍数 #\n");
printf(" *********************************************************\n");
printf(" # #\n");
printf(" # 1.辗转相除法 #\n");
printf(" # #\n");
printf(" # 2.相减法 #\n");
printf(" # #\n");
printf(" # 3.穷举法 #\n");
printf(" # #\n");
printf(" # 4.退出 #\n");
printf(" *********************************************************\n");
printf("\n");
printf(" 请选择您需要的操作序号(1-4)按回车确认:");
scanf("%d",&item);
printf("\n");
switch(item)//选择计算的方法
{
case 1:
zhanzhuan();break;
case 2:点击打开链接点击打开链接
xiangjian();break;
case 3:
qiongjv(); break;
case 4:
select =0;break;
default:
printf("请在1-4之间选择\n");
}
}
int main()
{
while(select)
{
menu();
}
return 0;
}