三种方法求最大公约数,最小公倍数

VC6.0下的C程序

#include<stdio.h>   /*标准I/O输入输出*/
#include<stdlib.h>  /*其它说明*/
int k=1;
void menu();  /*函数声明*/
void Euclidean_algorithm();
void multiply();
void brute_force();
void sleep();
int main() /*主程序开始*/
{  system("color f0");
    while(k)   /*判断程序执行*/
    {
        menu();
    }
    return 0;
}
 void menu()  /*主界面*/
 {
     int i;
     printf("\n                                            \n");
     printf("**********************************************\n");
     printf("—————1.辗转相除法                        \n");
     printf("—————2.相减法                            \n");
     printf("—————3.穷举法                            \n");
     printf("—————0.退出系统                          \n");
     printf("请选择菜单编号:\n");
     printf("**********************************************\n");
     scanf("%d",&i);
     switch(i)  /*选择体*/
     {
     case 1:Euclidean_algorithm();sleep();;break;
     case 2:multiply();sleep();break;
     case 3:brute_force();sleep();break;
     case 0:k=0;break;  
     default:printf("请在0—3之间选择:\n");sleep();break;
     }
 }
void Euclidean_algorithm()    /*辗转相除法*/
{int m,n,temp1,temp2,c,temp;
printf("请输入要求最大公约数和最小公倍数的两个整数:\n");
scanf("%d %d",&m,&n);
temp1=m;
temp2=n;
if(m<n)  /*判断赋值*/
{
temp=m;
m=n;
n=temp;
}
c=m%n;
while(c!=0)
{
m=n;
n=c;
c=m%n;
}
printf("这两个数的最大公约数为:%d\n",n);
printf("这两个数的最小公倍数为:%d\n",temp1*temp2/n);
}
void multiply()  /*相减法*/
{ int m,n,a;
    printf("请输入要求最大公约数和最小公倍数的两个整数:");
    scanf("%d %d\n",&m,&n);
    while(m>0&&n>0)
    {
        if(m>n)
            a=m-n;
        else
            a=n-m;
    }
     printf("这两个数的最大公约数为:%d\n",m);
     printf("这两个数的最小公倍数为:%d\n",m*n/a);

}
void brute_force()   /*穷举法*/
{int m,n,temp,i;
  printf("请输入要求最大公约数和最小公倍数的两个整数:\n");
    scanf("%d %d",&m,&n);
    if(m>n)
    {   temp=m;m=n;n=temp;  }
    for(i=m;i>=0;i--)     /*逐一列举*/
    if((n%i==0)&&(m%i==0))
        {     printf("这两个数的最大公约数为:%d\n",i);  
   printf("这两个数的最小公倍数为:%d\n",m*n/i); 
            break;
        }
}
void sleep()   /*功能函数*/
{
     printf("2秒后自动跳转主页面,请等待\n");
     _sleep(2000);
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值