當前位置:編程學習大全網 - 編程語言 - C語言求兩個正整數的最小公倍數和最大公約數怎麽編程

C語言求兩個正整數的最小公倍數和最大公約數怎麽編程

main()

{

int p,r,n,m,temp;

printf("Please enter 2 numbers n,m:");

scanf("%d,%d",&n,&m);//輸入兩個正整數.

if(n<m)//把大數放在n中,把小數放在m中.

{temp=n;

n=m;

m=temp;

}

p=n*m;//P是原來兩個數n,m的乘積.

while(m!=0)//求兩個數n,m的最大公約數.

{

r=n%m;

n=m;

m=r;

}

printf("Its MAXGongYueShu:%d\n",n);//打印最大公約數.

printf("Its MINGongBeiShu:%d\n",p/n);打印最小公倍數.

基本原理如下:

用歐幾裏德算法(輾轉相除法)求兩個數的最大公約數的步驟如下:

先用小的壹個數除大的壹個數,得第壹個余數;

再用第壹個余數除小的壹個數,得第二個余數;

又用第二個余數除第壹個余數,得第三個余數;

這樣逐次用後壹個數去除前壹個余數,直到余數是0為止。那麽,最後壹個除數就是所求的最大公約數(如果最後的除數是1,那麽原來的兩個數是互質數)。

例如求1515和600的最大公約數,

第壹次:用600除1515,商2余315;

第二次:用315除600,商1余285;

第三次:用285除315,商1余30;

第四次:用30除285,商9余15;

第五次:用15除30,商2余0。

1515和600的最大公約數是15。

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

由於兩個數的乘積等於這兩個數的最大公約數與最小公倍數的積。這就是說,求兩個數的最小公倍數,可以先求出兩個數的最大公約數,再用這兩個數的最大公約數去除這兩個數的積,所得的商就是兩個數的最小公倍數。

例 求105和42的最小公倍數。

因為105和42的最大公約數是21,

105和42的積是4410,4410÷21=210,

所以,105和42的最小公倍數是210。

  • 上一篇:在IT行業搞技術吃香嗎?
  • 下一篇:右腦好的人特點
  • copyright 2024編程學習大全網