求最大公约数

来源:互联网 发布:淘宝21亿金币保留进度 编辑:程序博客网 时间:2024/06/05 12:54
#include<stdio.h>
#include<stdlib.h>
int select = 1;
void division()//辗转相除法
{
int a,b,c;
while(1)
{printf("输入两个数字:");
scanf("%d%d",&a,&b);
c=a%b;
while(a%b!=0)
{
a=b;
b=c;
c=a%b;
};
printf("最大公约数为:%d\n",b);
}

}


void sub()//相减法
{
int a,b;
printf("请输入两个数:");
scanf("%d%d",&a,&b);
while(a!=b)
{ if(a>b)
a=a-b;
else
b=b-a;
}
printf("最大公约数为:%d\n",a);

}


void exm()//穷举法
{
int a,b,c;
printf("请输入两个数字:");
scanf("%d%d",&a,&b);
c=(a>b)?b:a;/*将最小值赋予c*/
while(a%c!=0||b%c!=0)/*a,b同时被c整除,不执行该循环*/
{
c--;
}
printf("最大公约数:%d\n",c);
}
void menu()
{
int num;
printf("[--------选择----------]\n");
printf("------1,辗转相除法------\n");
printf("-------2,相减法--------\n");
printf("-------3,穷举法--------\n");
printf("-------0,退出程序------\n");
scanf("%d",&num);
switch(num)
{
case 1:division();break;
case 2:sub();break;
case 3:exm();break;
case 0:select=0;break;
}
}
int main()

while(select)
{
menu();
}
system("pause");
return 0;

0 0