zoukankan      html  css  js  c++  java
  • C 实战练习题目16 -最大公约数和最小公倍数

    题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

    程序分析:

    (1)最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数;

    (2)求最大公约数用辗转相除法(又名欧几里德算法)

    1)证明:设c是a和b的最大公约数,记为c=gcd(a,b),a>=b,
    令r=a mod b
    设a=kc,b=jc,则k,j互素,否则c不是最大公约数
    据上,r=a-mb=kc-mjc=(k-mj)c
    可知r也是c的倍数,且k-mj与j互素,否则与前述k,j互素矛盾,
    由此可知,b与r的最大公约数也是c,即gcd(a,b)=gcd(b,a mod b),得证。

    2)算法描述:

    第一步:a ÷ b,令r为所得余数(0≤r<b);若 r="0,算法结束;b" 即为答案。<br=""> 第二步:互换:置 a←b,b←r,并返回第一步。</b);若>

    实例:

     1 #include<stdio.h>
     2 int main()
     3 {
     4     int a,b,t,r,n;
     5     printf("请输入两个数字:
    ");
     6     scanf("%d %d",&a,&b);
     7     if(a<b)
     8     {t=b;b=a;a=t;}
     9     r=a%b;
    10     n=a*b;
    11     while(r!=0)
    12     {
    13         a=b;
    14         b=r;
    15         r=a%b;
    16     }
    17     printf("这两个数的最大公约数是%d,最小公倍数是%d
    ",b,n/b);
    18     
    19     return 0;
    20 }

    以上实例输出结果为:

    请输入两个数字:
    12 26
    这两个数的最大公约数是2,最小公倍数是156

     感谢你的阅读,请用心感悟!希望可以帮到爱学习的你!!分享也是一种快乐!!!请接力。。。

    点击查看原文,谢谢!

  • 相关阅读:
    JTAG的SWD接线方式
    Qt のEXecl
    人脸识别
    Qt实现基本QMainWindow主窗口程序
    Qt学习之路MainWindow学习过程中的知识点
    QT_FORWARD_DECLARE_CLASS
    标准的并发控制实现
    C++ DFS
    C# 互操作(一) 编写一个C++ COM组件
    Socket使用SOAP调用WCF
  • 原文地址:https://www.cnblogs.com/kangyifan/p/12986463.html
Copyright © 2011-2022 走看看