求最大公約數c語言
c語言求最大公約數有輾轉相除法、更相減損術、窮舉法三種。
輾轉相除法。算法簡介:將兩個數a,b相除,如果余數c不等于0,就把b的值給a,c的值給b,直到c等于0,此時最大公約數就是b。
更相減損術。算法簡介:將兩個數中較大的數a減去較小的數b,如果差c等于0,那么最大公約數為b,如果不等于0,則將b的值給a,c的值給b,繼續相減直到差等于0。
窮舉法。算法簡介:將兩個數a,b中較小的值賦給i,將a除以i,b也除以i,若兩者的余數同時為0時,此時的i就是兩者的最大公約數。若不等于0,則將i-1,繼續將a除以i,b除以i,直至余數同時為0。
最大公約數:
最大公因數,也稱最大公約數、最大公因子,指兩個或多個整數共有約數中最大的一個。a,b的最大公約數記為(a,b),同樣的,a,b,c的最大公約數記為(a,b,c),多個整數的最大公約數也有同樣的記號。
早在公元前300年左右,歐幾里得就在他的著作《幾何原本》中給出了高效的解法——輾轉相除法。輾轉相除法使用到的原理很聰明也很簡單,假設用f(x,y)表示x,y的最大公約數,取k=x/y,b=x%y,則x=ky+b,如果一個數能夠同時整除x和y,則必能同時整除b和y。
而能夠同時整除b和y的數也必能同時整除x和y,即x和y的公約數與b和y的公約數是相同的,其最大公約數也是相同的,則有f(x,y)=f(y,x%y)(y>0),如此便可把原問題轉化為求兩個更小數的最大公約數,直到其中一個數為0,剩下的另外一個數就是兩者最大的公約數。
c語言求兩個數的最大公約數
C語言程序設計如何求最大公約數?
具體操作步驟如下:
一、新建一個C語言源程序,使用Visual C++6.0的軟件。
二、從鍵盤中輸入兩個正整數a和b。代碼:printf("plea input two number:\n");int a,b;scanf("%d%d",&a,&b)。
三、取兩個數a,b中的較小值存放到變量n中。代碼:int n=a;if (n>b)n=b。
四、從兩個數a和b中的較小數開始逐個減小1,尋找能整除a和b的整數。第一個找到的整數即整數a和b的最大公約數。
五、點擊工具欄的如圖圖標,對源程序編譯運行。
六、測試輸入4,6,得到最大公約數2。程序是正確的,以測試更多的數。
七、
上面面步驟是編程的思路,給出完整代碼,方便復制使用。#include<stdio.h>void main(){printf("plea input two number:\n"); int a,b;;scanf("%d%d",&a,&b);//從鍵盤輸入兩個數 int n=a; ;f (n>b) n=b;//取兩個數中的較小數 for(int i=n;i>=1;i--) { if (a%i==0&&b%i==0) { printf("最大公約數:%d \n",i); break;}}}。
c語言求最大公約數
最大公約數c語言編程的常用思路是:按照從大(兩個整數中較小的數)到?。ǖ阶钚〉恼麛?)的順序求出第一個能同時整除兩個整數的自然數,即為所求。
兩個數的最大公約數有可能是其中的小數,所以在按從大到小順序找尋最大公約數時,循環變量i的初值從小數n開始依次遞減,去尋找第一個能同時整除兩整數的自然數,并將其輸出。
需要注意的是,雖然判定條件是i>0,但在找到第一個滿足條件的i值后,循環沒必要繼續下去,如,25和15,最大公約數是5,對于后面的4、3、2、1沒必要再去執行,但此時判定條件仍然成立,要結束循環只能借助break語句。
具體代碼實現:
#include<stdio.h>
int main()
{
int m,n,temp,i;
printf("Input m&n:");
scanf("%d%d",&m,&n);
if(m<n)/*比較大小,使得m中存儲大數,n中存儲小數*/
{/*交換m和n的值*/
temp=m;
m=n;
n=temp;
}
for(i=n;i>0;i--)/*按照從大到小的順序尋找滿足條件的自然數*/
if(m%i==0&&n%i==0)
{/*輸出滿足條件的自然數并結束循環*/
printf("The GCD of%d and%d is:%d\n",m,n,i);
break;
}
return 0;
}
本文發布于:2023-02-28 18:47:00,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/167758387445836.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:c語言求最大公約數(c語言求最大公約數代碼).doc
本文 PDF 下載地址:c語言求最大公約數(c語言求最大公約數代碼).pdf
| 留言與評論(共有 0 條評論) |