C語言例項—輸入兩個正整數m和n,求其最大公約數和最小公倍數(gcc 編譯)。
阿新 • • 發佈:2018-12-05
1.輾轉相除法
輾轉相除法是古希臘求兩個正整數的最大公約數的,也叫歐幾里德演算法,其方法是用較大的數除以較小的數,上面較小的除數和得出的餘數構成新的一對數,繼續做上面的除法,直到出現能夠整除的兩個數,其中較小的數(即除數)就是最大公約數。以求288和123的最大公約數為例,操作如下:
288÷123=2餘42
123÷42=2餘39
42÷39=1餘3
39÷3=13,所以3就是288和123的最大公約數。
2.程式碼
//程式分析:利用輾除法 #include<stdio.h> int main() { int a, b, num1, num2, temp; printf("請輸入兩個正整數:"); scanf("%d %d", &num1, &num2); if (num1 < num2) { temp = num1; num1 = num2; num2 = temp; } a = num1; b = num2; /*利用輾除法,直到b為0為止*/ while (b != 0) { temp = a % b; a = b; b = temp; } printf("最大公約數是:%d\n", a); printf("最小公倍數是:%d\n", num1*num2 / a);
3.編譯
利用ubuntu gcc編譯器進行編譯,並執行。
gcc demo_6.1.c -o demo_6.1
./demo_6.1
4.執行結果
5.ubuntu下執行時中文亂碼解決
由於原程式在windows下Visual Studio 2017 Preview進行編寫,編譯執行是在ubuntu下,Windows下中文的預設編碼是GB2312,而Linux下預設編碼是utf-8,要使ubuntu終端能顯示中文字元,將終端字元編碼設定成GB2312。
但是這只是臨時設定,關閉終端後,字元編碼又會返回系統預設的utf-8模式,如果想永久設定,參考部落格解決Ubuntu中文顯示為亂碼
6.參考
1.https://blog.csdn.net/LiuJiuXiaoShiTou/article/details/53414398
2.https://blog.csdn.net/xuezhisdc/article/details/52587431