浙江大学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; } } } } } }
相关文章推荐
- 浙江大学PAT (Basic Level) Practice (中文)1017A除以BJAVA实现代码及分析
- 浙江大学PAT (Basic Level) Practice (中文)1014福尔摩斯的约会JAVA实现代码及分析
- 浙江大学PAT (Basic Level) Practice (中文)1018锤子剪刀布JAVA实现代码及分析
- 浙江大学PAT (Basic Level) Practice (中文)1016部分A+BJAVA实现代码及分析
- 浙江大学PAT (Basic Level) Practice (中文)1015德才论JAVA实现代码及分析
- PAT (Basic Level) Practise (中文)1002. 写出这个数 (20)(java实现)
- PAT (Basic Level) Practice (中文):1007 素数对猜想(20分)
- PAT (Basic Level) Practise (中文) 1013数素数 (20)
- PAT (Basic Level) Practise (中文) 1007. 素数对猜想 (20)
- PAT (Basic Level) Practise (中文)1007. 素数对猜想 (20) C语言
- PAT 乙级 (Basic Level) Practice (中文)1039
- 浙江大学PAT---Basic Level---1007----素数对猜想
- PAT (Basic Level) Practise (中文)1007. 素数对猜想 (20)
- PAT 乙级 (Basic Level) Practice (中文)1050
- PAT (Basic Level) Practice (中文)-1003
- PAT (Basic Level) Practice (中文)1056 组合数的和(C语言)
- PAT (Basic Level) Practice (中文)1070 结绳(C语言)
- PAT (Basic Level) Practice (中文)1075 链表元素分类(C语言)
- PAT (Basic Level) Practice (中文)1089 狼人杀-简单版(C语言)
- PAT 乙级 (Basic Level) Practice (中文)1017