生活随笔
收集整理的這篇文章主要介紹了
求n个数的最大公因数和最小公倍数(c)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
設(shè)計(jì)要點(diǎn)
可以通過(guò)反復(fù)求兩個(gè)正整數(shù)的最大公因數(shù)和最小公倍數(shù)的方法來(lái)實(shí)現(xiàn)。
規(guī)定(a,b)為a,b的最大公因數(shù),{a,b}為最小公倍數(shù)。
對(duì)于3個(gè)或3個(gè)以上的正整數(shù),最大公約數(shù)與最小公倍數(shù)有以下性質(zhì):
(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},...
應(yīng)用這一性質(zhì),要求n個(gè)整數(shù)的最大公約數(shù),先求出前n-1個(gè)整數(shù)的最大公約數(shù)b,再求第n個(gè)數(shù)與b的最大公約數(shù):
要求n個(gè)整數(shù)的最小公倍數(shù),先求出前n-1個(gè)整數(shù)的最小公倍數(shù)b,再求第n個(gè)數(shù)與b的最小公倍數(shù)。求n個(gè)數(shù)的最大公約數(shù)。
為便于輸出,設(shè)置m數(shù)組:
1)輸入的n個(gè)正整數(shù)存儲(chǔ)在m數(shù)組m[0],m[1],...,m[n-1]中。
2),開(kāi)始時(shí)b=m[0],即輸入的第一個(gè)數(shù)賦值給變量b。
3)進(jìn)入k循環(huán),每次把輸入的數(shù)m[1]~m[n-1]賦值給a求得a、b的最大公約數(shù)c。如果c=l,退出循環(huán),即m數(shù)組的最大公約數(shù)為1:否則賦值給b,即b=c,為下一輪運(yùn)算做準(zhǔn)備。求n個(gè)數(shù)的最小公倍數(shù)與上述類(lèi)似。
*代碼*
#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
;}for (c
= b
; c
>= 1; c
--)if (a
% c
== 0 && b
% c
== 0)break;if (b
== 1)break;b
= c
; }printf("最大公因數(shù):%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) break;b
= c
; }printf("最小公倍數(shù):%ld\n", c
);return 0;
}
總結(jié)
以上是生活随笔為你收集整理的求n个数的最大公因数和最小公倍数(c)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。