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
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); } } }