具體操作步驟如下:

網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了貴港免費建站歡迎大家使用!
一、新建一個C語言源程序,使用Visual C++6.0的軟件。
二、從鍵盤中輸入兩個正整數(shù)a和b。代碼:printf("please input two number:\n");int a,b;scanf("%d%d",a,b)。
三、取兩個數(shù)a,b中的較小值存放到變量n中。代碼:int n=a;if (nb)n=b。
四、從兩個數(shù)a和b中的較小數(shù)開始逐個減小1,尋找能整除a和b的整數(shù)。第一個找到的整數(shù)即整數(shù)a和b的最大公約數(shù)。
五、點擊工具欄的如圖圖標,對源程序編譯運行。
六、測試輸入4,6,得到最大公約數(shù)2。程序是正確的,以測試更多的數(shù)。
七、
上面面步驟是編程的思路,給出完整代碼,方便復制使用。#includestdio.hvoid main(){printf("please input two number:\n"); int a,b;;scanf("%d%d",a,b);//從鍵盤輸入兩個數(shù) int n=a; ;f (nb) n=b;//取兩個數(shù)中的較小數(shù) for(int i=n;i=1;i--) { if (a%i==0b%i==0) { printf("最大公約數(shù):%d \n",i); break;}}}。
思路:求兩個數(shù)的最大公約數(shù)使用輾轉(zhuǎn)相除法。
輾轉(zhuǎn)相除法,
又名歐幾里德算法(Euclidean
algorithm)乃求兩個正整數(shù)之最大公因子的算法。原理:兩個整數(shù)的最大公約數(shù)等于其中較小的數(shù)和兩數(shù)的差的最大公約數(shù)。
參考代碼:
#include stdio.h
int main()
{
int x,y,z;
scanf("%d%d",x,y);
while(x!=0)
{
z=x%y;
x=y;
y=z;
}
printf("%d\n",z);
return 0;
}
/*
運行結(jié)果:
6 27
3
*/
c語言求最大公約數(shù)有輾轉(zhuǎn)相除法、更相減損術(shù)、窮舉法三種。
輾轉(zhuǎn)相除法。算法簡介:將兩個數(shù)a,b相除,如果余數(shù)c不等于0,就把b的值給a,c的值給b,直到c等于0,此時最大公約數(shù)就是b。
更相減損術(shù)。算法簡介:將兩個數(shù)中較大的數(shù)a減去較小的數(shù)b,如果差c等于0,那么最大公約數(shù)為b,如果不等于0,則將b的值給a,c的值給b,繼續(xù)相減直到差等于0。
窮舉法。算法簡介:將兩個數(shù)a,b中較小的值賦給i,將a除以i,b也除以i,若兩者的余數(shù)同時為0時,此時的i就是兩者的最大公約數(shù)。若不等于0,則將i-1,繼續(xù)將a除以i,b除以i,直至余數(shù)同時為0。
最大公約數(shù):
最大公因數(shù),也稱最大公約數(shù)、最大公因子,指兩個或多個整數(shù)共有約數(shù)中最大的一個。a,b的最大公約數(shù)記為(a,b),同樣的,a,b,c的最大公約數(shù)記為(a,b,c),多個整數(shù)的最大公約數(shù)也有同樣的記號。
早在公元前300年左右,歐幾里得就在他的著作《幾何原本》中給出了高效的解法——輾轉(zhuǎn)相除法。輾轉(zhuǎn)相除法使用到的原理很聰明也很簡單,假設用f(x,y)表示x,y的最大公約數(shù),取k=x/y,b?=x%y,則x=ky+?b,如果一個數(shù)能夠同時整除x和y,則必能同時整除b和y。
而能夠同時整除b和y的數(shù)也必能同時整除x和y,即x和y的公約數(shù)與b和y的公約數(shù)是相同的,其最大公約數(shù)也是相同的,則有f(x,y)=f(y,x%y)(y0),如此便可把原問題轉(zhuǎn)化為求兩個更小數(shù)的最大公約數(shù),直到其中一個數(shù)為0,剩下的另外一個數(shù)就是兩者最大的公約數(shù)。
最大公約數(shù)c語言編程的常用思路是:按照從大(兩個整數(shù)中較小的數(shù))到小(到最小的整數(shù)1)的順序求出第一個能同時整除兩個整數(shù)的自然數(shù),即為所求。
兩個數(shù)的最大公約數(shù)有可能是其中的小數(shù),所以在按從大到小順序找尋最大公約數(shù)時,循環(huán)變量i的初值從小數(shù)n開始依次遞減,去尋找第一個能同時整除兩整數(shù)的自然數(shù),并將其輸出。
需要注意的是,雖然判定條件是i0,但在找到第一個滿足條件的i值后,循環(huán)沒必要繼續(xù)下去,如,25和15,最大公約數(shù)是5,對于后面的4、3、2、1沒必要再去執(zhí)行,但此時判定條件仍然成立,要結(jié)束循環(huán)只能借助break語句。
具體代碼實現(xiàn):
#includestdio.h
int main()
{
int m,n,temp,i;
printf("Input mn:");
scanf("%d%d",m,n);
if(mn)/*比較大小,使得m中存儲大數(shù),n中存儲小數(shù)*/
{/*交換m和n的值*/
temp=m;
m=n;
n=temp;
}
for(i=n;i0;i--)/*按照從大到小的順序?qū)ふ覞M足條件的自然數(shù)*/
if(m%i==0n%i==0)
{/*輸出滿足條件的自然數(shù)并結(jié)束循環(huán)*/
printf("The GCD of%d and%d is:%d\n",m,n,i);
break;
}
return 0;
}
1、新建一個C語言源程序,這里使用Visual C++6.0的軟件:
2、從鍵盤中輸入兩個正整數(shù)a和b。取兩個數(shù)a,b中的較小值存放到變量n中。從兩個數(shù)a和b中的較小數(shù)開始逐個減小1,尋找能整除a和b的整數(shù),第一個找到的整數(shù)即整數(shù)a和b的最大公約數(shù),最后將找到的結(jié)果輸出即可完成程序的編寫:
3、對源程序編譯運行,測試輸入4、6,得到最大公約數(shù)2說明程序是正確的,以上就是用c語言求最大公約數(shù)的過程:
c語言求最大公約數(shù)代碼:
#includestdio.h
#includewindows.h
#pragma warning(disable:4996)//因為是vs編譯器,不承認scanf函數(shù),其他編譯器可忽略
int gcd(int i, int j)
{
int a;
if (i j)//交換變量值
{
a = i;
i = j;
j = a;
}
while (j != 0){
a = i % j;
i = j;
j = a;
}
return i;
}
int main()
{
int x;
int y;
scanf("%d %d", x, y);
int c = gcd(x, y);
printf("%d\n", c );
system("pause");
return 0;
}
解題分析:
極大公數(shù),也稱最大公約數(shù)、最大公因子,指兩個或更多的整數(shù)共有約數(shù)中最大的一個;最小公倍數(shù)是指兩個或多個整數(shù)共同擁有的倍數(shù),稱為它們的公倍數(shù),而除0以外的最小公倍數(shù)稱為兩個整數(shù)的最小公倍數(shù)。最小公倍=兩整數(shù)的乘積=最大公約數(shù),因此如何確定最大公約數(shù)是關(guān)鍵。
由于2將 b=r1q2改為 b=r1q2,則b1r1的公約數(shù)必須是a1b公約數(shù)。因為一個數(shù)可以同時除 b和r1之外,那么就必須能夠整除 a,因此,對于a1b,也就是 a的公約數(shù)。相反,如果一個數(shù) d,能夠同時整除a1b,則由1)式,就一定能整除r1,因此,它的公約數(shù) d是b1r1。
本文題目:求最大公約數(shù)的函數(shù)c語言 c++求最大公約數(shù)的函數(shù)
轉(zhuǎn)載注明:http://chinadenli.net/article40/hhjceo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計公司、品牌網(wǎng)站制作、虛擬主機、移動網(wǎng)站建設、App開發(fā)、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)