輸入兩個正整數m和n,求其最大公約數和最小公倍數。(要求用while語句實現)
阿新 • • 發佈:2021-01-23
輸入兩個正整數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,則再回去執行①。
例如求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;
}
輸出結果: