1樓:匿名使用者
我給你解釋一下:
我假設有a,b兩個數,設t為他們的任一公約數那麼肯定有下列式子成立:
a = t * x1
b = t * x2
其中x1,x2都為整數,我們不妨假設a >= b(a <= b的情況是一樣的),此時顯然有x1 >= x2
我用上面的式子 - 下面的式子
則有a - b = t * (x1 - x2),很顯然t也是a - b的公約數,而且它也是b的公約數,問題就轉化為了a和b(a>=b)的公約數也就是a-b和b的公約數,因此a和b(a>=b)的最大公約數也就是a-b和b的最大公約數,依次類推,直到其中的乙個較大的數能除盡較小的數,那麼此時教小的數肯定是最大公約數.證畢
我給你個例子:
a=15 b=9
那麼a和b的最大公約數就是9和6(15-9)的最大公約數,此時6不能被9整除,繼續,也就是6和3(9-6)的最大公約數,此時3能被6整除,因此3就上15和9的最大公約數.
還有不懂的繼續交流~~
2樓:
if(m 這段是比較m n的大小,保證m放大的數,n放小的數a=m; b=n; 將m值給a n的值給b 最大公約數計算方法是 a除b的求餘數 再將b的值給a既a變為b 然後將 餘數給b 即:所說的輾轉相除法 保證 a第一次除b,然後b除以a除b的餘數,反覆進行 直到b為0或小數為止 最終 a為最大公約數 a*b/最大公約數就是最小公倍數 3樓:炒飯 拿本數論的書看看輾轉相除法吧 1.輸入輸出問題,在輸入整數或浮點數後面直接輸入字元或字串,要清除一下回車號,或都在輸入整數後直接清空快取,再讀取內容 2.越界問題,修正問題1後,如果記憶體裡沒有連繼的 0 字元,你這程式會嚴重越界 語句 k j 1 前加一句 if c j 0 break 到尾就不要再迴圈了,防止越界 改完後的效... 這個函式的主要作用應該是將你輸入的資料轉換成你所要求的進製數,並以十進位制的形式輸出,比如 你輸入2 進製數是2,那麼 在二進位制數里只有0 和1 所以,這個是無法按照你的要求轉換的,程式會退出,但是,如果你輸入的a,進製數是16,那麼在十六進製制數中a代表的十進位制數是10.如果你輸入的是ab,進... include char fun int n main 編譯通過 include include char fun int n main 執行結果 no yes press any key to continue 首先你的演算法有點問題,會有4舍5入現象 取決於編譯軟體,系統 其次,指標返回有問題,...C語言問題,求高手幫忙,C語言問題,求高手幫忙!!
c語言問題!!求高手賜教,求C語言高手賜教!!!
C語言的高手請進!高分!急 急 急