当前位置 : 主页 > 编程语言 > c++ >

PrimeNumberJudge - Basic Method

来源:互联网 收集:自由互联 发布时间:2021-06-30
PrimeNumber package com.math;/** * Created by Kiyoshi on 2017/6/13. */public class PrimeNumber { public PrimeNumber() { } public boolean judgeNumber(long num) { //判断是否为质数 boolean result = false; //初始化判断变量 long fa
PrimeNumber
package com.math;

/**
 * Created by Kiyoshi on 2017/6/13.
 */
public class PrimeNumber {
    public PrimeNumber() {

    }

    public boolean judgeNumber(long num) { //判断是否为质数
        boolean result = false;            //初始化判断变量
        long factor = 2;                   //初始化因数

        while (factor < num) {             //循环条件:当因数小于输入数
            if (num == 2)
            if (num % factor == 0) {            //若在2-这个数之间有一个数为这个数的因数
                result = false;                 //结果为false
                break;                          //弹出循环
            } else if (num % factor != 0) {     //如果没有因数
                result = true;                  //则不断设置true
            }
            factor ++;                          //循环一次因数加一
        }
     return result;                             //返回结果
    }

    public long getRandomPN (long min, long max) {
        long result = 0;
        long mid = max - min;
        long rdn = min + (long)(Math.random() * mid);

        if (min >= max) {
            System.out.println("Max Number cannot be larger than the min one.");
        }

        while (judgeNumber(rdn) != true) {
            rdn = min + (long)(Math.random() * mid);
        }
        result = rdn;
        return result;
    }

    public class PrimeNumberTable {                        //PrimeNumber内部Table类
        //声明所需变量
        String[] temptable;                     //第一个临时table
        String[] outtable;
        int maxvalue;                           //原数组长度以及需要判断到的最大值

        public PrimeNumberTable() {                        //无参构造方法
            //初始化变量
            maxvalue = 0;
        }

        public PrimeNumberTable(int maxvalue) {               //有参构造方法
            //初始化变量
            this.maxvalue = maxvalue;
            temptable = new String[maxvalue];      //初始化数组
            newTable();
        }

        protected void newTable() {
            int counter = 0;                                    //数组位置计数
            int endpos = 0;                                     //数组结束位置

            for (long num = 0; num < maxvalue; num ++) {        //遍历数组赋值 顺序写入质数
                if (judgeNumber(num)) {                         //判断是否为质数
                    temptable[counter] = String.valueOf(num);   //若是则写入
                    counter ++;                                 //计数器计数
                }
            }

            for (int i = 0; i < temptable.length; i ++) {       //遍历数组
                if (temptable[i] == null) {                     //若找到第一个数组中为null的值
                    endpos = i;                                 //那么终止位置为i - 1
                    break;                                      //弹出循环
                }
            }

            outtable = new String[endpos];                      //初始化输出数组

            for(int i = 0; i < endpos; i ++) {                  //遍历该数组
                outtable[i] = temptable[i];                     //为其赋值
            }
        }

        public void newTable(int maxvalue) {
            int counter = 0;                                    //数组位置计数
            int endpos = 0;                                     //数组结束位置
            temptable = new String[maxvalue];

            for (long num = 0; num < maxvalue; num ++) {        //遍历数组赋值 顺序写入质数
                if (judgeNumber(num)) {                         //判断是否为质数
                    temptable[counter] = String.valueOf(num);   //若是则写入
                    counter ++;                                 //计数器计数
                }
            }

            for (int i = 0; i < temptable.length; i ++) {       //遍历数组
                if (temptable[i] == null) {                     //若找到第一个数组中为null的值
                    endpos = i;                                 //那么终止位置为i - 1
                    break;                                      //弹出循环
                }
            }

            outtable = new String[endpos];                      //初始化输出数组

            for(int i = 0; i < endpos; i ++) {                  //遍历该数组
                outtable[i] = temptable[i];                     //为其赋值
            }
        }

        public String[] getTable() {
            return outtable;
        }

        public void printTable() {
            for (int i = 0; i < outtable.length; i ++) {
                System.out.println(outtable[i]);
            }
        }

        public void setMaxvalue(int maxvalue) {
            newTable(maxvalue);
        }
    }
}
网友评论