1013 数素数

1013 数素数 (20分)
 

令 Pi​​ 表示第 i 个素数。现任给两个正整数 MN104​​,请输出 PM​​ 到 PN​​ 的所有素数。

输入格式:

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

输出格式:

输出从 PM​​ 到 PN​​ 的所有素数,每 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 #define N 104750
 3 using namespace std;
 4 int main () 
 5 {
 6    int m,n;
 7    cin>>m>>n;
 8    int tem;
 9    int v[N]={0};
10    for(int i=2;i<=N/2;i++)  //剔除合数,余下的为素数
11    {
12        tem=i;
13        if(v[tem]==0)
14        {
15           while(tem<N)
16           {
17               tem+=i;
18               if(tem<N)
19                   v[tem]=1;
20           }
21        }
22    }
23    int index=0,num=0;
24    for(int i=2;i<N;i++)
25    {
26        if(v[i]==0)
27        {
28            index++;    //记录第几个素数
29            if(index>n) 
30                break;
31            if(index>=m&&index<=n)  //输出第[m,n]这一区间的素数
32            {
33                num++;
34                if(num%10==0)   //输出每行第十个数后换行
35                    cout<<i<<endl;
36                else if(index<n)
37                    cout<<i<<" ";
38                else
39                    cout<<i;
40            }
41        }
42    }
43    return 0;
44 }

ac了

 

posted @ 2020-05-01 10:08  和运气碰碰  阅读(332)  评论(0编辑  收藏  举报