暑假训练日志10

   总结一下今天的学习情况,上午来了后把昨天的的训练题搜着看了看。看别人的代码做的挺轻松的,一到自己做就gg了,还是做的题目太少了,其次就是遇到问题不能快速找出问题的解决思路(找出了写完老是WA),大问题,反思!!
   下午在翻博客的时候看到大牛说的素数的快速线性筛法,不会重复筛除一个数,应该也是很快的了一种筛法了(自己试验,对数据比较大时确实效率高一些)。实现代码:

#include<bits/stdc++.h>
using namespace std;
const long N=200000;
long prime[N]={0},num_prime=0;
int isNotPrime[N]={1,1};
int main()
{
    for(long i=2;i<N;i++)
    {
        if(!isNotPrime[i])
            prime[num_prime++]=i;
            //关键处1
            for(long j=0;j<num_prime&&i*prime[j]<N;j++)
            {
                isNotPrime[i*prime[j]]=1;
                if(!i%prime[j])//关键处2
                break;
            }
    }
    //筛出前100个素数
    for(long i=0;i<100;i++)
    cout<<prime[i]<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_40630836/article/details/81515880
今日推荐