1. 程式人生 > >C語言例項—輸入兩個正整數m和n,求其最大公約數和最小公倍數(gcc 編譯)。

C語言例項—輸入兩個正整數m和n,求其最大公約數和最小公倍數(gcc 編譯)。

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