1. 程式人生 > 其它 >輸入兩個正整數m和n,求其最大公約數和最小公倍數。(要求用while語句實現)

輸入兩個正整數m和n,求其最大公約數和最小公倍數。(要求用while語句實現)

技術標籤:C語言c語言

輸入兩個正整數m和n,求其最大公約數和最小公倍數。(要求用while語句實現)


一、最大公約數求法

(1)輾轉相除法

設有兩整數a和b:
① a%b得餘數c
② 若c==0,則b即為兩數的最大公約數
③ 若c!=0,則a=b,b=c,再回去執行①。

例如求27和15的最大公約數過程為:
27÷15 餘12
15÷12 餘3
12÷3 餘0
因此,3即為最大公約數。

(2)相減法

設有兩整數a和b:
① 若a>b,則a=a-b
② 若a<b,則b=b-a

③ 若a==b,則a(或b)即為兩數的最大公約數
④ 若a!=b,則再回去執行①。

例如求27和15的最大公約數過程為:
27-15=12( 15>12 )
15-12=3( 12>3 )
12-3=9( 9>3 )
9-3=6( 6>3 )
6-3=3( 3==3 )
因此,3即為最大公約數。

二、求最小公倍數演算法

最小公倍數=兩整數的乘積÷最大公約數

程式碼如下:

#include <stdio.h>
int main()
{
    int m,n,max,min,b,c;
	printf("請輸入兩個整數:\n"
); scanf("%d%d",&m,&n); c=m%n; b=m*n; while(c!=0) { m=n; n=c; c=m%n; } max=n; min=b/max; printf("\n最大公約數為:%d\n最小公倍數為:%d\n",max,min); return 0; }

輸出結果:
在這裡插入圖片描述