设计算法如下:
(1) 用 2 , 3 , 5 , 7 逐个试除 N 的方法求出 100 以内的所有素数。
(2) 用 100 以内的所有素数逐个试除的方法求出 10000 以内的素数。
(1) 用 2 , 3 , 5 , 7 逐个试除 N 的方法求出 100 以内的所有素数。
(2) 用 100 以内的所有素数逐个试除的方法求出 10000 以内的素数。
首先,将2,3,5,7分别存放在a[1]、a[2]、a[3]、a[4]中,以后每求出一个素数,只要不大于100,就依次存放在A数组中的一个单元中。当我们求100—10000之间的素数时,可依次用a[1]-a[2]的素数去试除N,这个范围内的素数可以不保存,直接打印。
import java.util.*;
class Main{
public static void main(String args[]){
int primes[]=new int[1000000];
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
primes[0]=2;
primes[1]=3;
int count=2;
boolean flag=false;
for(int i=5;i<=n;i+=2){
flag=true;
for(int j=0;primes[j]*primes[j]<=i&&primes[j]!=0;j++)//只需要判断最大的素数也不能整除n时,n就不是素数primes*primes<=n;
if(i%primes[j]==0){//note:divite by zero
flag=false;
break;
}
if(flag){
primes[count++]=i;//装下素数
}
}
for(int k=0;k<count;k++){
System.out.print(primes[k]+"\t");
if((k+1)%5==0)
System.out.println();
}
System.out.println();
}
}
}