日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言经典例16-最大公约数和最小公倍数

發布時間:2025/6/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言经典例16-最大公约数和最小公倍数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 1 題目
  • 2 分析
    • 2.1 輾轉相除法
    • 2.2 相減法
  • 3 實現
    • 3.1 實現1(輾轉相除法)
    • 3.2 實現2(相減法)

1 題目

輸入兩個正整數m和n,求其最大公約數和最小公倍數。

2 分析

求最大公約數和最小公倍數這里給出兩種實現方法,實際上只用求最大公約數即可,因為在數學上最小公倍數有這樣的關系,所求的兩個數的積即為其最大公約數和最小公倍數的積,所以只求出其中一個,另一個便能直接計算出來。

注:這里只給出通俗的計算方法,并不給出嚴格數學證明過程。

2.1 輾轉相除法

輾轉相除法求兩個數的最大公約數的步驟如下,假如兩個數為 aaabbb

  • 用大的數 aaa 除以小的數 bbb,得第一個余數 ccc
  • 再用上一步計算中小的那個數除以上一步中的余數,即 bbb 除以 ccc,得第二個余數 ddd
  • 重復上兩步;
  • 直到余數是0為止.那么,最后一個除數就是所求的最大公約數(如果最后的除數是1,那么原來的兩個數是互質數)
  • 程序見實現3.1

    2.2 相減法

    假如兩個數為 aaabbb

  • a>ba > ba>b,則 a=a?ba=a-ba=a?b
  • a<ba<ba<b,則 b=b?ab=b-ab=b?a
  • a=ba=ba=b,則 aaa(或 bbb)即為兩數的最大公約數
  • aaabbb,則再回去執行第一步
  • 程序見實現3.2

    3 實現

    3.1 實現1(輾轉相除法)

    #include <stdio.h>int main() {int n, m;int temp;printf("請輸入n和m,中間用空格分隔:");scanf("%d%d", &n, &m);// 將較大的那個數賦值給a,較小的那個數賦值給bif (m > n) {temp = m;m = n;n = temp;}int a = n;int b = m;// 利用輾轉相除法計算最大公約數while (b != 0) {temp = a % b;a = b;b = temp;}printf("最大公約數是%d\n", a);printf("最小公倍數是%d\n", n * m / a);return 0; }

    3.2 實現2(相減法)

    #include <stdio.h>int main() {int a, b ;printf("請輸入a和b,中間用空格分隔:");scanf ("%d%d", &a, &b);int m = a;int n = b; // 當a, b不相等,用大數減小數,直到相等為止while (a != b) {if (a > b) {a = a - b;} else {b = b - a;}}printf("最大公約數是%d\n", a);printf("最小公倍數是%d\n", m * n / a); }

    總結

    以上是生活随笔為你收集整理的C语言经典例16-最大公约数和最小公倍数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。