自學演算法之互質數和質數程式碼實現
阿新 • • 發佈:2018-12-09
- 互質數
- 定義:最大公約數只有1的兩個整數,叫做互質數。
- 例如: 7,11,13的最大公約數為1,即三者互質。
- 程式碼實現:
- 輾轉相除法(兩數的最大公約數求法)
- 用較小的數(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與該數本身兩個正因數的數。
- 程式碼實現(有更高效的辦法,可參考其他部落格):
//方法一
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;
}