#include<stdio.h>
#include<stdlib.h>
int select = 1;
void division()//辗转相除法
{
int a,b,c,p;
printf("请输入两个整数,中间用逗号隔开:\n");
scanf("%d,%d",&a,&b);
if(a<b)//保证第一个输入的数字大于第二个输入的数字
{
c = a;
a = b;
b = c;
}
while(b != 0)
{
p = a%b;
a = b;
b = p;
}
printf("两个数的最大公约数为%d\n",a);
printf("\n");
}
void phasesubtraction()//相减法
{
int a,b,c;
printf("请输入两个整数,中间用逗号隔开:\n");
scanf("%d,%d",&a,&b);
while(a != b)
if(a>b)
{
a = a-b;
}
else
{
b = b-a;
}
printf("两个数的最大公约数为%d\n",a);
printf("\n");
}
void methodofexhaustion()//穷举法
{
int a,b,c,p,i;
printf("请输入两个整数,中间用逗号隔开:\n");
scanf("%d,%d",&a,&b);
for(i=1;i<a+1;i++)
if(a%i == 0 && b%i == 0)
{
p = i;
}
printf("两个数的最大公约数为%d\n",p);
printf("\n");
}
void menu()//主菜单界面
{
int num;
printf("请从1-3中选择方法\n");
printf("1,辗转相除法\n");
printf("2,相减法\n");
printf("3,穷举法\n");
printf("0,退出程序\n");
scanf("%d",&num);
switch(num)
{
case 1:division();break;
case 2:phasesubtraction();break;
case 3:methodofexhaustion();break;
case 0:select=0;break;
}
}
int main()//主函数
{
while(select)
{
menu();
}
system("pause");
return 0;
}
用三种方法(辗转相除法,相减法,穷举法)求两个数的最大公约数,仅供参考。
最新推荐文章于 2022-11-21 20:43:36 发布