求最小公倍数,最大公约数

辗转相除法

输入N、M

//N对M求余为A,    若A不为0,则将余值赋给M,M值赋给N,再N%M,一直往下,
//直到N%M=0,中间过程即是N一直大于M的.用一个RES作为中间变量来传值.
//最后,若A=0,则N为最大公约数..最小公倍数为M与N乘积/最大公约数
//所以为了记录M与N的初始值,用m_temp, n_temp来得到M与N的初始值,以方便最后求最小公倍数
#include<stdio.h>
#include<stdlib.h>

int  main(void)
{
int n,m;
int n_temp,m_temp;
   
    printf("输入两个正整数\n");
    scanf("%d %d",&n,&m);
    n_temp=n;
    m_temp=m;
    int res;
    if(m>0&&n>0)
    {
        do{
            res=n%m;
            n=m;
            m=res;
        }while(m!=0);
            printf("最大公约数是:%d\n",n);
            printf("最小公倍数是:%d\n",m_temp*n_temp/n);
    }
    else printf("wrong\n");
    system("pause");
    return 0;
}
//在输入时N和M二者大小无所谓

//在do.. while循环中小数模上大数等于小数,所以如果N<M,
//则第一次循环是将二者交换了,以后还是大数模上小数!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值