自学算法之互质数和质数代码实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37014990/article/details/82668674
  • 互质数
    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;
        }

猜你喜欢

转载自blog.csdn.net/qq_37014990/article/details/82668674