用C语言编写程序:求两数的最大公约数。

来源:互联网 发布:浮云淘宝小号出售平台 编辑:程序博客网 时间:2024/06/06 01:32

此程序用了3个方法(相减法、穷举法、辗转相除法)来求两数的最大公约数,用户可自己选择用哪种算法。

#include<stdio.h>#include<stdlib.h>int select=1;//select 为是否退出系统的标记void subtract(){int a,b;printf("请输入两个数据:\n");  scanf("%d %d", &a, &b); while(a!=b)//用大数减小数直到差和减数相同,输出最大公约数{if(a>b) a=a-b;else b=b-a;}   printf("最大公约数为%d。\n", a);     }void divide()//辗转相除法{int a, b, c;  printf("请输入两个数据:\n");  scanf("%d %d", &a, &b);  while(b!=0)  //当余数为0时跳出循环{ c=a%b; a=b; b=c;}  printf("最大公约数为%d。\n", a);  }void exhaustion()//穷举法求最大公约数{int a,b,c;printf("请输入两个数据:\n");  scanf("%d %d", &a, &b);  for(c=a;c>0;c--)if(a%c==0&&b%c==0)//第一次可以整除的数为最大公约数{printf("最大公约数为%d。\n",c);break;//获得最大公约数就跳出循环}}void menu()//初始界面{int i;printf("\n");printf("                          求两数的最大公约数算法                   \n");printf("           ********************************************************\n");printf("           *                     请选择算法:                     *\n");printf("           *              0.相减法。      1.相除法。              *\n");printf("           *              2.穷举法。      3.退出程序。            *\n");printf("           ********************************************************\n");scanf("%d",&i);switch(i){case 0:subtract();break;case 1:divide();break;case 2:exhaustion();break;case 3:select =0;break;default:printf("请在0-3之间选择\n");}}int main(){ while(select){menu();}system("pause");return 0;} 


0 0