1. 程式人生 > >Java小程式:輸入兩個正整數m和n,利用輾除法求其最大公約數

Java小程式:輸入兩個正整數m和n,利用輾除法求其最大公約數

java:輸入兩個正整數m和n,求其最大公約數和最小公倍數。

程式分析:利用輾除法。

程式執行截圖:


輾除法

輾轉相除法, 又名歐幾里德演算法(Euclidean algorithm)乃求兩個正整數之最大公因子的演算法。它是已知最古老的演算法, 其可追溯至3000年前。它首次出現於歐幾里德的《幾何原本》(第VII卷,命題i和ii)中,而在中國則可以追溯至東漢出現的《九章算術》

void main()  int a,b,num1,num2,temp; printf("please input two numbers:\n"); scanf("%d,%d",&num1,&num2); if(num1<num2)
{ temp=num1; num1=num2; num2=temp; } a=num1; b=num2; while(b!=0)/*利用輾除法,直到b為0為止*/ { temp=a%b; a=b; b=temp; } printf("gongyueshu:%d\n",a); printf("gongbeishu:%d\n",num1*num2/a); 

public class Test {

	public static final void main(String[] args) {
		System.out.println("請輸入兩個正整數");
		System.out.print("第一個正整數:");
		Scanner scanner = new Scanner(System.in);
		String one = scanner.nextLine();
		int a = Integer.valueOf(one);
		System.out.print("第二個正整數:");
		String two = scanner.nextLine();
		int b = Integer.valueOf(two);
		System.out.println("a = " + a + ", b =" + b);
		// 求最大公約數
		// 1. a ÷ b,令temp為所得餘數(0≤r<b)
		// 若 temp = 0,演算法結束;b 即為答案。
		// 2. 互換:置 a←b,b←temp,並返回第一步。
		int temp, num1 = a, num2 = b;
		if (a < b) {
			// 互換位置
			temp = b;
			b = a;
			a = temp;
		}
		System.out.println("a = " + a + ", b =" + b);
		while (b != 0) {/* 利用輾除法,直到b為0為止 */
			temp = a % b;
			a = b;
			b = temp;
		}
		System.out.println("最大公約數:" + a);
		// 求最小公倍數
		System.out.println("最小公倍數:" + num1 * num2 / a);
	}
}