设计算法如下:
(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(); } } }
时间: 2024-10-13 08:14:17