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