技術學習記錄

JAVA求最大公因數、最小公倍數、九九乘法表

最近在回顧一些簡單的程式運用,感覺太久沒用都快還給老師了….

因此來複習一些以前上課時老師最喜歡教的東西:最大公因數、最小公倍數、九九乘法表

最大公因數及最小公倍數

迴圈寫法

首先是for迴圈解法:

public class MyClass {
    public static void main(String args[]) {
        int x = 84;  // 數值1
        int y = 70;  // 數值2
              
        int temp = 1;  // 暫存用變數
        
        // 使用 for 迴圈
        for (int i = 2; i <= x; i++) {
            // 判斷兩數是否都被整除
            if (x % i == 0 && y % i == 0) {
                temp = i;
            }
        }
        
        System.out.println("最大公因數:" + temp);
        System.out.println("最小公倍數:" + x * y / temp);
    }
}

執行結果如下:

最大公因數:14
最小公倍數:420

while解法 如下:

public class MyClass {
    public static void main(String args[]) {
        int x = 84;
        int y = 70;
        
        int in1 = x;
        int in2 = y;
          
        int temp = 1;
          
        while (in1 % in2 != 0) {
            temp = in2;
            in2 = in1 % in2;
            in1 = temp;
        }
          
        System.out.println("最大公因數:" + in2);
        System.out.println("最小公倍數:" + x * y / in2);
    }
}

執行結果如下:

最大公因數:14
最小公倍數:420

do-while解法如下:

public class MyClass {
    public static void main(String args[]) {
        int x = 84;
        int y = 70;
        
        int in1 = x;
        int in2 = y;
          
        int temp = 1;
          
        do {
            temp = in2;
            in2 = in1 % in2;
            in1 = temp;
        } while (in1 % in2 != 0);
          
        System.out.println("最大公因數:" + in2);
        System.out.println("最小公倍數:" + x * y / in2);
    }
}

執行結果如下:

最大公因數:14
最小公倍數:420

遞迴寫法

public class MyClass {
    public static void main(String args[]) {
        int x = 84;
        int y = 70;
        
        System.out.println("最大公因數:" + gcd(x, y));
        System.out.println("最小公倍數:" + x * y / gcd(x, y));
    }
    
    private static int gcd(int a, int b) { 
        if(b == 0) 
            return a; 
        else 
            return gcd(b, a % b); 
    }
}

執行結果如下:

最大公因數:14
最小公倍數:420

九九乘法表

逐行排列

public class MyClass {
    public static void main(String args[]) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(i + "x" + j + "=" + i*j + "\t");
            }
            System.out.println();
        }
    }
}

結果如下:

1x1=1	
2x1=2	2x2=4	
3x1=3	3x2=6	3x3=9	
4x1=4	4x2=8	4x3=12	4x4=16	
5x1=5	5x2=10	5x3=15	5x4=20	5x5=25	
6x1=6	6x2=12	6x3=18	6x4=24	6x5=30	6x6=36	
7x1=7	7x2=14	7x3=21	7x4=28	7x5=35	7x6=42	7x7=49	
8x1=8	8x2=16	8x3=24	8x4=32	8x5=40	8x6=48	8x7=56	8x8=64	
9x1=9	9x2=18	9x3=27	9x4=36	9x5=45	9x6=54	9x7=63	9x8=72	9x9=81

逐列排列

public class MyClass {
    public static void main(String args[]) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "x" + i + "=" + i*j + "\t");
            }
            System.out.println();
        }
    }
}

結果如下:

1x1=1	
1x2=2	2x2=4	
1x3=3	2x3=6	3x3=9	
1x4=4	2x4=8	3x4=12	4x4=16	
1x5=5	2x5=10	3x5=15	4x5=20	5x5=25	
1x6=6	2x6=12	3x6=18	4x6=24	5x6=30	6x6=36	
1x7=7	2x7=14	3x7=21	4x7=28	5x7=35	6x7=42	7x7=49	
1x8=8	2x8=16	3x8=24	4x8=32	5x8=40	6x8=48	7x8=56	8x8=64	
1x9=9	2x9=18	3x9=27	4x9=36	5x9=45	6x9=54	7x9=63	8x9=72	9x9=81

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *