java实现
package al;
import java.util.ArrayList;
public class Prime {
//输入要求素数个数n,返回前n个素数
public int[] prime_2(int n){
if(n<1){
return null;
}
int[] primes = new int[n];
int num =2;
for(int i=0;i<n;i++){
while(!isPrime(num)){
num++;
}
primes[i]=num;
num++;
}
return primes;
}
//判断数n是否为素数
public boolean isPrime(int n){
if(n<2){
return false;
}
for(int i=2;i<=n/2;i++){
if(n%i==0)
return false;
}
return true;
}
//输入一个数,求这个数之内的素数
public ArrayList<Integer> prime_1(int n){
if(n<2){
return null;
}
ArrayList<Integer> primes = new ArrayList<Integer>();
boolean[] isPrime = new boolean[n+1];
for(int i=0;i<isPrime.length;i++){
isPrime[i]=true;
}
for(int i=2;i<=n;i++){
if(isPrime[i]){
primes.add(i);
for(int j=2;j*i<=n;j++){
isPrime[j*i]=false;
}
}
}
return primes;
}
public static void main(String[] args){
Prime prime = new Prime();
//输出200以内素数
int n=100;
ArrayList<Integer> primes_1=prime.prime_1(n);
for(int i=0;i<primes_1.size();i++){
System.out.print(primes_1.get(i)+" ");
}
//求前n个素数
n=10;
int[] primes_2 = prime.prime_2(n);
System.out.println();
for(int i=0;i<primes_2.length;i++){
System.out.print(primes_2[i]+" ");
}
}
}
结果:
1.求1-100内的素数: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
2.求前10个素数:2 3 5 7 11 13 17 19 23 29