誰來解釋一下用輾轉相除法求最兩個數的最大公約數原理

2022-03-05 11:25:17 字數 3342 閱讀 3011

1樓:展熙賀皓軒

m=7560

n=2700

r=2160

m=2700

n=2160

r=540

m=2160 n=540

r=0所以2700和7560最大公約數是540然後在還用540和3960求最大公約數

m=3960

n=540

r=180

m=540

n=180

r=0所以3個數最大公約數是180

輾轉相除法求兩數的最大公約數的原理是什麼?

2樓:平未漢曼容

無論怎樣除,若有一個數是被除數和除數的公約數,則餘數一定也含有這個公約數。(被除數≥除數)

3樓:我不是他舅

你是要證明輾轉相除法嗎?

則假設有兩個正整數a和b

其中a

a和b的最大公因數是c

則a=cp

b=cq

用b除以a

則b=am+r

其中r是餘數

則只要證明a和r的最大公因數是c即可

b=am+r

則cq=cpm+r

r=c(q-pm)

所以r是c的倍數

且顯然p和q-pm互質

這個很簡單,你自己證明一下

所以a和r的最大公因數是c

即a和b的最大公因數等於a和r的最大公因數這就證明了輾轉相除法

用輾轉相除法求2個數的最大公約數,怎麼做?

4樓:特特拉姆咯哦

int divisor (int a,int b) /*自定義函式求兩數的最大公約數*/

int temp; /*定義整型變數*/

if(atemp=a;

a=b;

b=temp;

} /*設定中間變數進行兩數交換*/

while(b!=0) /*通過迴圈求兩數的餘數,直到餘數為0*/temp=a%b;

a=b; /*變數數值交換*/

b=temp;

return a; /*返回最大公約數到呼叫函式處*/

5樓:士妙婧

兩個整數的最大公約數是能夠同時整除它們的最大的正整數。

輾轉相除法基於如下原理:

兩個整數的最大公約數等於其中較小的數和兩數的差的最大公約數。例如,252和105的最大公約數是21(252 = 21 × 12;105 = 21 × 5);因為252 − 105 = 147,所以147和105的最大公約數也是21。在這個過程中,較大的數縮小了,所以繼續進行同樣的計算可以不斷縮小這兩個數直至其中一個變成零。

這時,所剩下的還沒有變成零的數就是兩數的最大公約數。由輾轉相除法也可以推出,兩數的最大公約數可以用兩數的整數倍相加來表示,如21 = 5 × 105 + (−2) × 252。這個重要的等式叫做貝祖等式。

6樓:匿名使用者

用大的除小的,寫餘數,再用大的除小的,除盡了,就是那個數

求兩個數的最大公約數為什麼可用輾轉相除法,原理是什麼

7樓:

因為對任意同時整除a和b的數u,有

a=su,b=tu,

它也能整除r,因為r=a-bq=su-qtu=(s-qt)u。

反過來每一個整除b和r的整數v,有

b=s'v , r=t'v

它也能整除a,因為a=bq+r=s'vq+t'v=(s'q+t')v.

因此a和b的每一個公因子同時也是b和r的一個公因子,反之亦然。這樣由於a和b的全體公因子集合與b和r的全體公因子集合相同,所以a和b的最大公因子必須等於b和r的最大公因子

其實還有一個更相減損術,也是求最大公約數的好方法

c語言:用輾轉相除法求兩個正整數的最大公約數

8樓:匿名使用者

#include

void main()

printf("%d",m);}

9樓:匿名使用者

int r,t;

r=n%m;

while(r!=0)

return(m);

程式設計一個c語言程式,輸入兩個數,採用輾轉相除法來計算最大公約數

10樓:四舍**入

可以參考下面的**:

#include

int main()

r=n%m;

while (r!=0)

printf ("%d\n", m);

return 0;

}擴充套件資料:

函式 scanf() 是從標準輸入流stdin(標準輸入裝置,一般指向鍵盤)中讀內容的通用子程式,可以說明的格式讀入多個字元,並儲存在對應地址的變數中。

函式的第一個引數是格式字串,它指定了輸入的格式,並按照格式說明符解析輸入對應位置的資訊並儲存於可變引數列表中對應的指標所指位置。每一個指標要求非空,並且與字串中的格式符一一順次對應。

11樓:非常可愛

#include

#include

intmain()

printf("最大公約數%d\n",a);

system("pause");

}擴充套件資料

c語言求兩個數的最大公約數輾轉相減法

#include

intmain()

else

printf("%d\n",a=0?b:a);

return0;}}

12樓:匿名使用者

#include

int main()

r=n%m;

while (r!=0)

printf ("%d\n", m);

return 0;}

13樓:自戀狂

#include

int maxgy(int a,int b)//返回最大公約數的函式}return b;

}int main()

14樓:神哥

#include

int main()

r=a%b;

while (r!=0)

c=m*n/b;

printf("最大

公約數是:%d\n",b);

printf("最小公倍數是:%d\n",c);

return 0;}

C語言程式設計 用輾轉相除法求兩個正整數的最大公約數

include stdio.h main printf d m 本人剛學,請多多指教。main a num1 b num2 while b 0 利用輾除法,直到專b為0為止屬 printf gongyueshu d n a printf gongbeishu d n num1 num2 a 我發現c...

C語言用輾轉相除法求兩個正整數的最大公約數

include void main printf d m include int int n,int m t n m while t return m end int r,t r n m while r 0 return m c語言程式 用 輾轉相除法 求兩個正整數的最大公約數 程式填空 defin...

誰來幫我解釋一下這段linux下的C程式

這屬於c 的範疇,雖然我c 學得也是半斤八兩,但是這段 我還是基本上過得去。我假設你是有一定的c程式設計基礎,誰能幫我解釋一下下面的c程式 include define m sizeof unsigned int 8 定義常量來儲存sizeof unsigned int 8 其實為了輸入簡單點 in...