PAT乙级题库“傻瓜”题解之数素数

Posted solititude

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT乙级题库“傻瓜”题解之数素数相关的知识,希望对你有一定的参考价值。

P?i?? 表示第 i 个素数。现任给两个正整数 MN10的四次方,请输出 P?M?? 到 P?N?? 的所有素数。

输入格式:

输入在一行中给出 M 和 N,其间以空格分隔。

输出格式:

输出从 P?M?? 到 P?N?? 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。

输入样例:

5 27

输出样例:

11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103
 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int min,max;
 6     cin>>min>>max;
 7     long sushu[105000];//用来存素数的数组
 8     int n=max-min;//要输出素数的个数
 9     int k=0;//素数数组的下角标
10     int m=0;//用来判断输出的格式
11     for(int i=2;i<=105000;i++)
12     {
13         int flag=-1;
14         for(int j=2;j*j<=i;j++) 
15         {
16             if(i%j==0)
17             {
18                 flag=1;
19                 break;
20             }
21         }
22         if(flag==-1)//到这里是对素数的判断
23         {
24             sushu[k]=i;
25             if(k>=min&&k<=max)//这里是对要输出的素数的判断
26             {
27                 m++;
28                 cout<<sushu[k-1];
29                 if(m%10==0) cout<<endl;
30                 else if(m-1!=n) cout<<" ";
31             }
32             k++;     
33         }
34         if(k-1==max) break;//退出外层遍历范围内的数的循环
35     }
36     return 0;
37 }

个人认为这道题的考点主要是在第四个测试点:

1、当N等于10的4次方时,你的用来存素数的数组应该给多少个内存;

2、你用什么方法来判断一个数是素数,如果用的方法不对,会使运行超时,这就涉及到素数的定义和性质了:https://blog.csdn.net/zlambert/article/details/65684470

以上是关于PAT乙级题库“傻瓜”题解之数素数的主要内容,如果未能解决你的问题,请参考以下文章

PAT乙级题库“傻瓜”题解之字符统计

PAT乙级题库“傻瓜”题解之划拳

PAT乙级题库“傻瓜题解”之输出PATest

PAT乙级题库“傻瓜”题解之互评成绩

PAT乙级题库“傻瓜”题库之有多少不同的值

PAT乙级题库全套总结