zoukankan      html  css  js  c++  java
  • 哥德巴赫猜想 Java实现

    1.接口实现

    package goldbach;
    /**
     * 输入一个大于6的偶数,请输出这个偶数能被分解为哪两个质数的和。如:10=3+7 12=5+7
     * 此为按接口实现类完成
     * 
     * @author GGGXXC
     *
     */
    public class InterfaceGoldbachGuess {
        public static void main(String[] args) {
            divideNum(new InterGoldBach(), 100);
        }
    
        /**
         * 将两个数字分成两个,分别判断是不是素数
         * @param cp 传入的CheckPrime接口的实现类
         * @param target 传入的目标值
         */
        public static void divideNum(CheckPrime cp, int target) {
            for (int i = 2; i <= target / 2; i++) {
    
                if (cp.isPrime(i) && cp.isPrime(100 - i)) {
                    System.out.println(i + "和" + (target - i));
                }
    
            }
    
        }
    
    }
    
    /**
     * 定义检查一个整数是不是素数的接口
    */
    interface CheckPrime {
        boolean isPrime(int n);
    }
    /**
     * 采用接口的方式检查某个整数是不是素数
     * 
     * @author GGGXXC
     *
     */
    class InterGoldBach implements CheckPrime {
        public  boolean isPrime(int n) { // 这里能加上static吗?
    
            int k = 2;
    
            while (k <= n / 2) {
                if (n % k == 0) {
                    return false;
                }
                k++;
            }
            return true;
        }
    }

    2.封装实现

    package goldbach;
    
    /**
     * 输入一个大于6的偶数,请输出这个偶数能被分解为哪两个质数的和。如:10=3+7 12=5+7
     * 此为封装成方法的方式
     * 
     * @author GGGXXC
     *
     */
    public class Goldbach {
        public static void main(String[] args) {
    
            int target = 100;
    
            for (int i = 2; i <= target / 2; i++) {
                boolean ret = isPrime(i) && isPrime(100 - i);
    
                if (ret) {
                    System.out.println(i + "和" + (target - i));
                }
            }
    
        }
    
        /**
         * 判断传入的数字是不是质数
         * 
         * @param num 需要判断是否是质数的数字
         * @return 是质数返回true,不是质数返回false
         */
        public static boolean isPrime(int num) {
    
            int k = 2;
    
            while (k <= num / 2) {
                if (num % k == 0) {
                    return false;
                }
                k++;
            }
            return true;
        }
    
    }
  • 相关阅读:
    js获取当前系统时间
    input标签之外是否一定添加form标签
    用css实现凹陷的线条
    js中的类型和函数参数传递类型问题
    jqDOM操作
    js中null与undefined的区别
    centos 支持复制与粘贴
    docker 部署springboot应用
    springboot springcloud 父项目pom工程创建pom文件
    自写流程图 支持批量展示
  • 原文地址:https://www.cnblogs.com/raising/p/12865712.html
Copyright © 2011-2022 走看看