一.质数筛法的的应用
题目:patb1013
https://pintia.cn/problem-sets/994805260223102976/problems/994805309963354112
图片说明
代码如下:

#include <cstdio>
#include <iostream>
using namespace std; 
//易错点1: 
const int maxn =1000001;  //不能刚刚好取10^4,因为第10000个素数不知道多大,尽量开大点才对
//然后在超过第n个时候就立马break,这样不会浪费时间使复杂度仍然不会变!
int prime[maxn],num=0;
bool p[maxn]={0};
void findprime(int n){
    for(int i=2;i<maxn;i++){
        if(p[i]==false) {
            prime[num++]=i;
            if(num>=n){     //易错点 2 :合理优化 
                break;     //只需要n个素数,因此超过时即可结束 
            }
            for(int j=i+i;j<maxn;j+=i){
                p[j]=true;
            } 
        }
    }
}

int main()
{
    int m,n,count=0;
    cin>>m>>n;
    findprime(n);
    for(int i=m;i<=n;i++){   //输出第m个素数至第n个素数 
        cout<<prime[i-1];    //易错点 3:下标从0开始!!
        count++;
        if(count%10!=0&&i<n){ //易错点 4 :格式问题
        //因为空格肉眼看不出来,可以先用其他字符输出看效果,比如#
            cout<<" ";
        }else {
            cout<<endl;
        } 
    } 
    return 0;
}