求1-n的质数
public class Prime {
public static boolean isPrime(int n){
if(n==1)return false;
for(int i=2;i<=n/2;i++){
if(n%i==0) return false;
}
return true;
}
public static void printPrime(int n){
for(int i=1;i<=n;i++){
if(isPrime(i)) System.out.println(i);
}
}
public static void main(String[] args) {
int n=40;
printPrime(n);
}
}
前n个质数
public class Prime {
public static boolean isPrime(int n){
if(n==1)return false;
for(int i=2;i<=n/2;i++){
if(n%i==0) return false;
}
return true;
}
public static void getPrime1(int n){
int m=0;
for(int i=1;;i++){
if(isPrime(i)) {
System.out.print(i+" ");
m++;
}
if(m==n) break;
}
}
public static void getPrime2(int n){
int[] primes=new int[n];
int pc,m,k;/*pc质数个数,m测试的数,k能够被整除的数*/
primes[0]=2;
pc=1;
m=3;
while(pc<n){
k=0;
while(primes[k]*primes[k]<=m){
if(m%primes[k]==0){
m+=2;
k=1;
}else {
k++;
}
}
primes[pc++]=m;
m+=2;
}
for(k=0;k<pc;k++){
System.out.print(primes[k]+" ");
}
}
public static void main(String[] args) {
int n=5000;
long start1=new Date().getTime();
getPrime1(n);
long end1=new Date().getTime();
System.out.println();
System.out.println(end1-start1);
System.out.println();
getPrime2(n);
long end2=new Date().getTime();
System.out.println();
System.out.println(end2-end1);
}
}
用时
1390
63
方法2更好一些