1013
数素数![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f1a17fb0f910ff46d6bfad032a883044.png)
这道题的核心还是快速找素数,我个人的思路是先创建一个足够大的数组(其中至少有一万个素数),然后先将这些数的质合判断出来,最后再根据输入的范围输出相应的质数。
具体代码实现如下:
import java.util.Scanner;
public class Main {
static boolean ZS[]=new boolean[120001];
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
int m;
int n;
int j=0;
int a[]=new int[10001];
m=input.nextInt();
n=input.nextInt();
calZS();
for(int i=1;i<10001;i++)
{
while(true)
{
if(ZS[j])
{
a[i]=j;
j++;
break;
}
j++;
}
}
for(int i=m;i<=n;i++)
{
if(i==n)
{
System.out.print(a[i]);
break;
}
if((i-m+1)%10==0)
{
System.out.print(a[i]);
System.out.println();
continue;
}
System.out.print(a[i]+" ");
}
}
public static void calZS()
{
ZS[0]=false;
ZS[1]=false;
ZS[2]=true;
for(int i=3;i<120001;i++)
{
if(i%2==0)
{
ZS[i]=false;
}
else
{
ZS[i]=true;
}
}
for(int i=3;i<120001;i++)
{
if(ZS[i])
{
for(int j=2;j<=Math.sqrt(i);j++)
{
if(i%j==0)
{
ZS[i]=false;
break;
}
}
}
}
}
}