您的位置:首页 > 编程语言 > C语言/C++

C语言 用三种方法求最大公约数

2017-03-22 23:02 211 查看
#include<stdio.h>
#include<stdlib.h>
int m,n,k=1;
void divide();
void subtract();
void exhaustion();
void menu();
int main()
{
while(k)
{
menu();
}
system("pause");
return 0;
}
void divide()                /*辗转相除法*/
{
int a,b,c;
printf("Input two integer numbers:(a/b)\n");
scanf("%d/%d",&a,&b);
m=a;
n=b;
while(b!=0)                /*余数不为0,继续相除,直至余数为0*/
{
c=a%b;
a=b;
b=c;
}
printf("The largest common divisor:%d\n",a);
}
void subtract()              /*相减法*/
{
int a,b;
printf("Input two integer numbers:(a/b)\n");
scanf("%d/%d",&a,&b);
m=a;
n=b;
while(a!=b)               /*a,b不相等,大数减小数,直至相等*/
if(a>b)
a=a-b;
else b=b-a;
printf("The largest common divisor:%d\n",a);
}
void exhaustion()              /*穷举法*/
{
int  a,b,t;
printf("Input two integer numbers:(a/b)\n");
scanf ("%d/%d", &a, &b);
m=a;
n=b;
t=(a>b)?b:a;              /*采用条件表达式求出两数中最小值*/
while(t>0)                /*a,b同时被整除*/
{
if(a%t==0&&b%t==0)break;
t--;
}
printf("The largest common divisor:%d\n",t);
}
void menu()                   /*界面*/
{
int num;
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃☆☆☆☆☆☆☆☆☆☆☆求最大公约数☆☆☆☆☆☆☆☆☆┃\n");
printf("┃—┅┅┅┅┅┅┅┅┅┅1.辗转相除法┅┅┅┅┅┅┅┅┅┃\n");
printf("┃—┅┅┅┅┅┅┅┅┅┅2.相减法┅┅┅┅┅┅┅┅┅┅┅┃\n");
printf("┃—┅┅┅┅┅┅┅┅┅┅3.穷举法┅┅┅┅┅┅┅┅┅┅┅┃\n");
printf("┃—┅┅┅┅┅┅┅┅┅┅0.返回到开始┅┅┅┅┅┅┅┅┅┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf("请选择菜单编号:\n");
scanf("%d",&num);
switch (num)
{
case 1:divide();break;
case 2:subtract();break;
case 3:exhaustion();break;
case 0:k=0;break;
default:printf("请在0-3之间选择\n");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: