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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

求n个数的最大公因数和最小公倍数(c)

發布時間:2025/3/19 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 求n个数的最大公因数和最小公倍数(c) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

設計要點
可以通過反復求兩個正整數的最大公因數和最小公倍數的方法來實現。
規定(a,b)為a,b的最大公因數,{a,b}為最小公倍數。
對于3個或3個以上的正整數,最大公約數與最小公倍數有以下性質:

(al,a2.a3)=((al,a2),a3)。 (al,a2.a3,a4)=((al,a2,a3),a4),... {al,a2,a3}=({al,a2},a3}。 {al,a2,a3,a4}={{al,a2,a3},a4},... 應用這一性質,要求n個整數的最大公約數,先求出前n-1個整數的最大公約數b,再求第n個數與b的最大公約數: 要求n個整數的最小公倍數,先求出前n-1個整數的最小公倍數b,再求第n個數與b的最小公倍數。求n個數的最大公約數。 為便于輸出,設置m數組: 1)輸入的n個正整數存儲在m數組m[0],m[1],...,m[n-1]中。 2),開始時b=m[0],即輸入的第一個數賦值給變量b。 3)進入k循環,每次把輸入的數m[1]~m[n-1]賦值給a求得a、b的最大公約數c。如果c=l,退出循環,即m數組的最大公約數為1:否則賦值給b,即b=c,為下一輪運算做準備。求n個數的最小公倍數與上述類似。 *代碼* #include <stdio.h>int main() {int n;long a, b, c, r, m[100];scanf("%d", &n);for (int i = 0; i < n; i++)scanf("%ld", &m[i]);b = m[0];for (int i = 1; i < n; i++) {a = m[i];if (a < b) {c = a;a = b;b = c;}//確保a>bfor (c = b; c >= 1; c--)//(b一直更新為前n-1個數的最大公因數if (a % c == 0 && b % c == 0)//當a比前面的數的最大公因數還小時余數一直不會0,直到小于abreak;if (b == 1)break;b = c; //存最大公因數}printf("最大公因數:%ld\n", c);//求最小公倍數b = m[0];for (int i = 1; i < n; i++) {a = m[i];if (a < b) {c = a;a = b;b = c;}for (c = a; c <= a * b; c += a) //求最大公倍數if (c % b == 0) //注意是 c+=a,且當c能整除小的那個數時就求出了//(b一直更新為前n-1個數的最小公倍數break;b = c; //更新最小公倍數}printf("最小公倍數:%ld\n", c);return 0; }

總結

以上是生活随笔為你收集整理的求n个数的最大公因数和最小公倍数(c)的全部內容,希望文章能夠幫你解決所遇到的問題。

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