求两个正整数的最大公约数和最小公倍数

程序流程图

源代码

#include<stdio.h>  
#include<stdlib.h>  
int k=1;
void menu();  //函数声明
void chu();
void jian();
void qiongju();

int main() 
{  printf("*******欢迎进入*******\n\n");
    int flag=1;//是否循环的判定 
    int m;
    while(flag) 
    {
        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:chu();break;
     case 2:jian();break;
     case 3:qiongju();break;
     case 0:k=0;break;  
     default:printf("请在0—3之间选择:\n");break;
     }
 }
void chu()    //辗转相除法
{int m,n,c,temp1,temp2,temp;
printf("请输入需要计算的两个整数(空格隔开):\n");
scanf("%d %d",&m,&n);
temp1=m;
temp2=n; 
if(m<n)  //判断两数大小,使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 jian()  //辗转相减法
{ int m,n,c;
    printf("请输入需要计算的两个整数:\n");
    scanf("%d %d",&m,&n);
    c=m;
    while(m!=n)
    {
        if(m>n)
            m=m-n;
        else
            n=n-m;
    }
     printf("这两个数的最大公约数为:%d\n",m);
     printf("这两个数的最小公倍数为:%d\n",c*n/m);

}
void qiongju()   //穷举法
{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;
        }
}

运行测试
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值