1. 程式人生 > >自學演算法之互質數和質數程式碼實現

自學演算法之互質數和質數程式碼實現

  • 互質數
    1. 定義:最大公約數只有1的兩個整數,叫做互質數。
    2. 例如: 7,11,13的最大公約數為1,即三者互質。
    3. 程式碼實現:
    4. 輾轉相除法(兩數的最大公約數求法)
      • 用較小的數(Big)除以較大的數,餘數
        public static int isZhi(int big, int small) {
                if(small > big) {
                    int temp = big;
                    big = small;
                    small = temp;
                }
                int
r = big % small; if(r == 0) { return small; } else { return isZhi(small, r); } } public static void main(String[] args) { // 最大公約數位1, 即互質 System.out.println(isZhi(3
, 5) == 1); }
  • 質數
    1. 定義:又稱素數,在大於1的自然數中,除了1和該數本身外,無法被其他自然數整除。即只有1與該數本身兩個正因數的數。
    2. 程式碼實現(有更高效的辦法,可參考其他部落格):
        //方法一
        public static boolean isPrimel(int num) {
            if(num < 2) return false;
               //num一半以後,不可能存在其他因數(除本身以外)
            for(int i = 2; i < num / 2
; i++) { //存在其他因數 if(num % i == 0) { return false; } } return true; }