源代码
#include<stdio.h>
#include<stdlib.h>
int k=1;
void menu(); //函数声明
void chu();
void jian();
void qiongju();
int main()
{ printf("*******欢迎进入*******\n\n");
int flag=1;//是否循环的判定
int m;
while(flag)
{
menu();
}
return 0;
}
void menu() //菜单界面
{
int i;
printf("\n \n");
printf("--------------------------------\n");
printf("—————1.辗转相除法 ———— \n");
printf("—————2.辗转相减法 ———— \n");
printf("—————3.穷举法 ———— \n");
printf("—————0.退出系统 ———— \n");
printf("请选择菜单编号: \n");
printf("--------------------------------\n");
scanf("%d",&i);
switch(i) //选择方法
{
case 1:chu();break;
case 2:jian();break;
case 3:qiongju();break;
case 0:k=0;break;
default:printf("请在0—3之间选择:\n");break;
}
}
void chu() //辗转相除法
{int m,n,c,temp1,temp2,temp;
printf("请输入需要计算的两个整数(空格隔开):\n");
scanf("%d %d",&m,&n);
temp1=m;
temp2=n;
if(m<n) //判断两数大小,使m>n
{
temp=m;
m=n;
n=temp;
}
c=m%n;
while(c!=0)
{
m=n;
n=c;
c=m%n;
}
printf("这两个数的最大公约数为:%d\n",n);
printf("这两个数的最小公倍数为:%d\n",temp1*temp2/n);
}
void jian() //辗转相减法
{ int m,n,c;
printf("请输入需要计算的两个整数:\n");
scanf("%d %d",&m,&n);
c=m;
while(m!=n)
{
if(m>n)
m=m-n;
else
n=n-m;
}
printf("这两个数的最大公约数为:%d\n",m);
printf("这两个数的最小公倍数为:%d\n",c*n/m);
}
void qiongju() //穷举法
{int m,n,temp,i;
printf("请输入需要计算的两个整数:\n");
scanf("%d %d",&m,&n);
if(m>n)
{ temp=m;m=n;n=temp; }
for(i=m;i>=0;i--) //穷举
if((n%i==0)&&(m%i==0))
{ printf("这两个数的最大公约数为:%d\n",i);
printf("这两个数的最小公倍数为:%d\n",m*n/i);
break;
}
}
运行测试