//*********最大公约数***********
//作者:谭秀芳
//版本:v1.0
//创建时间:2017年3月19日
//主要功能:随机从键盘中输入的两个整数,用三种算法实现求两个整数的最大公约数,即辗转相除法,穷举法,相减法
//************************************
#include <stdio.h>
int main()
{
int a,b,temp,num,k=1; //定义变量
int Division(int x,int y);
int Decrease(int x,int y);
int Exhausetion(int x,int y);
while(k) //使用while结构循环输入两个整数
{
printf("请输入两个整数(两数之间用空格隔开):\n");
scanf("%d%d",&a,&b);
if(a<=0||b<=0) //判断a,b,中是否有0存在,若无则继续运行,若有则输出错误提示并重新输入两个整数
{
printf("输入的数据错误!\n");
printf("请输入两个整数(两数之间用空格隔开):\n");
scanf("%d%d",&a,&b);
}
if(a<b) //判断a,b的大小,并且使a>b
{
temp=b;
b=a;
a=temp;
}
printf("1.辗转相除法 2.相减法 3.穷举法 4.退出 5.继续 \n");
int m=1;
while(m) //输入两个整数后循环输出菜单,调用相关的函数
{
printf("请选择菜单编号:");
scanf("%d",&num);
switch(num)
{
case 1: Division(a,b);break;
case 2: Decrease(a,b);break;
case 3: Exhausetion(a,b);break;
case 4: k=0,m=0;break;
case 5: k=1,m=0;break;
default:printf("请在数字1-4之间选择\n");
}
}
}
return 0;
}
//辗转相除法求最大公约数函数
int Division(int x,int y)
{
int t;
t=x%y;
if(t!=0)
{
x=y;
y=t;
t=x%y;
}
printf("最大公约数:%d\n",y);
return 0;
}
//相减法求最大公约数函数
int Decrease(int x,int y)
{
while(x!=y)
if(x>y)
x=x-y;
else
y=y-x;
printf("最大公约数为:%d\n",x);
return 0;
}
//穷举法求最大公约数函数
int Exhausetion(int x,int y)
{
int i,t;
for(i=1;i<=x;i++)
if(x%i==0&&y%i==0)t=i;
printf("最大公约数:%d\n",t);
return 0;
}
文章标题
最新推荐文章于 2022-05-12 11:32:07 发布