算法:如果i是质数,那么i的倍数不是质数
package com.org;
import java.util.Arrays;
public class TextPrimeNumber {
/**
* @param args
*/
public static boolean[] filterNumber(int num){
if(num<0){
System.out.println("范围必须大于0");
return null;
}
boolean[] isPrime=new boolean[num+1];
isPrime[1]=false;
Arrays.fill(isPrime, 2,num+1,true);//将布尔数组元素的值都赋为True
int n=(int)Math.sqrt(num);
for(int i=1;i<n;i++){
if(isPrime[i]){
for(int j=i*2;j<=num;j+=i){ //如果i是质数,那么i的倍数不是质数
isPrime[j]=false;
}
}
}
return isPrime;
}
public static void showAppointArea(int number){
boolean[] primes=filterNumber(number);
int num=0;
if(primes!=null){
for(int i=1;i<primes.length;i++){
if(primes[i]){
System.out.print(i+" ");
if(++num%10==0){
System.out.println();
}
}
}
System.out.println();
}
System.out.println("一共有"+num+"个");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int num=200;
System.out.println("范围在"+num+"内的质数有:");
showAppointArea(num);
}
}