Java小程式:輸入兩個正整數m和n,利用輾除法求其最大公約數
阿新 • • 發佈:2019-01-09
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); } }