演算法:最大公約數,演算法:公約數

來源:互聯網
上載者:User

演算法:最大公約數,演算法:公約數

輾轉相除法的緣由,如所示。


對於最大公約數的演算法

這是貪心演算法。
設最大公約數為X,則存在整數i,j使得:
a = i*X,b = j*X
又因為c = a % b 所以存在整數k使得:
c = a-k*b = i*X - k*j*X = (i-j*k)*X
即X也是c的公約數,然後a = b; b = c;
如此迴圈,總有b = k*a的時侯,這時b就是最大公約數。
 
最大公約數演算法與最小公倍數

首先我也是菜鳥。。
然後你的程式我試了好像沒錯。。但改為下面的似乎更好
#include <stdio.h>//沒必要包含math.h
void main()
{ int m,n,s,r, t;//t為什麼是float?可以int
printf("請輸入整數m,n:");
scanf("%d,%d",&m,&n);
s=m*n;
if(m<n) { r=m; m=n; n=r; }
r=m%n;
while(r) { m=n; n=r; r=m%n; }
t=s/n;
printf("最大公約數=%d,最小公倍數=%d\n",n,t); //輸出t格式變%d
}
最後看一下你輸入兩數的中間有沒加“,”,輸入格式應該是m,n
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.