• 素数筛


     1 void daa()
     2 {
     3     int k=0;
     4     for(int i=2;i<100000;i++)
     5     {
     6         if(x[i]==0)
     7         {
     8             prime[k]=i;
     9             for(int j=i*2; j<100000; j+=i)
    10                 x[j]=1;
    11             k++;
    12         }
    13     }
    14 }
    View Code
    //黑历史不忍卒睹
    const int N = 1e6 + 10;
    
    int prime[N];
    int cnt = 0;
    //O(n*loglogn)
    void pri()
    {
    	memset(vis, 0, sizeof(vis));
    	for(int i = 2; i < N; i++)
    	{
    		if(!vis[i])
    		{
    			for(int j = i + i; j < N; j += i)
    				if(!vis[j])
    					vis[j] = 1;
    			prime[cnt++] = i;
    		}
    	}
    }
    //O(n)
    void Sieve()
    {	
    	memset(vis, 0, sizeof(vis));
        for(int i=2;i<N;i++)
        {
            if(!vis[i]) 
    			prime[cnt++]=i;
            for(int j = 0; j < cnt && i * prime[j] < N; j++)
            {
                vis[i * prime[j]] = 1;
                if(0 == (i % prime[j]))
    				break;
            }
        }
    }
    
    
  • 相关阅读:
    Static了解和复习继承。
    复习篇1.对象和封装
    第一章笔记
    A + B Problem II
    Number Sequence
    Fibonacci Again
    8615 快乐
    8635 气球
    大牛之路II
    8617 阶乘数字和
  • 原文地址:https://www.cnblogs.com/Yumesenya/p/5230565.html
Copyright © 2020-2023  润新知