常规方法
public static boolean isNumber(int n) {
boolean flag=true;
for(int i=2;i<n;i++) {
if(n%i==0) {
flag=false;
}
}
return flag;
}
public static boolean isNumber1(int n) {
boolean flag=true;
for(int i=2;i*i<=n;i++) {
if(n%i==0) {
flag=false;
}
}
return flag;
}
埃氏筛选法
public static int isNumber3(int N) {
int n=2;
while(n/Math.log(n)<N) {
n++;
}
int arr[]=new int[n];
int x=2;
while(x<n) {
if(arr[x]!=0) {
x++;
continue;
}
int k=2;
while(x*k<n) {
arr[x*k]=-1;
k++;
}
x++;
}
int result=0;
int sum=0;
for(int i=2;i<arr.length;i++) {
if(arr[i]==0) {
sum++;
}
if(sum==N) {
result=i;
break;
}
}
return result;
}
质因数分解
public static Map<Integer, Integer> primeFactor(int num){
Map<Integer, Integer> map= new HashMap<Integer, Integer>();
for(int i=2;i*i<=num;i++) {
while(num%i==0) {
Integer v=map.get(i);
if(v==null) {
map.put(i, 1);
}
else {
map.put(i, v+1);
}
num=num/i;
}
}
return map;
}