您的位置:首页 > 编程语言 > Java开发

浙江大学PAT (Basic Level) Practice (中文)1013数素数JAVA实现代码及分析

2019-03-14 11:02 429 查看

1013

数素数

这道题的核心还是快速找素数,我个人的思路是先创建一个足够大的数组(其中至少有一万个素数),然后先将这些数的质合判断出来,最后再根据输入的范围输出相应的质数。
具体代码实现如下:

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;
}
}
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: