zoukankan      html  css  js  c++  java
  • 【 数学基础】【素数线性筛法--欧拉筛法模板】【普通筛法的优化】

    质数(素数):指大于1的所有自然数中,除了1和自身,不能被其它自然数整除的数

    合数:比1大,但不是素数的数称为合数,合数除了被1和自身整除,还能被其它数整除

    质因数(素因数或质因子):能整除给定正整数的质数,除1以外,两个没有其它共同质因子的正整数称为互质

    1和0既非素数又非合数

    素数筛法原理:素数的倍数一定不是素数。

    实现步骤:用一个boook数组对maxn内的所有数进行标记,1为合数,0为素数,book初始化为0是假设全部数都为素数,从第一个素数2开始,把2的倍数标记为1,然后继续下一轮

    欧拉筛法与普通筛法比较,优化之处在于每个合数不会被重复标记,时间复杂度和空间复杂度均为o(n)

    #define maxn 100005
    #define maxl 1299710
    int prime[maxn],book[maxl];
    void prime()
    {
        int i,sum=0,j;
        memset(book,0,sizeof(book));
        for(i = 2; i < 2500000; i ++)
        {
            if(!book[i])
                prime[sum++] = i;
            for(j = 0; j < sum; j ++)//保证合数只会被它的最小质因数筛去 ,因此每个数只会被筛去一次 
            {
                if(i*prime[j] >= maxl)
                    break;
                book[i*prime[j]] = 1;
                if(i%prime[j] == 0)
                    break;
            }
        }
        return;
    }
  • 相关阅读:
    verilog编码规范
    verilog代码 想法验证---与寄存器输出有关
    MMCM与PLL
    Vivado约束文件(XDC)的探究(2)
    Vivado约束文件(XDC)的探究(1)
    VGA图像显示组成模块分析
    关于Quad PLL /CPLL参考时钟的选择
    GTX的生成(包括COMMON)
    SD-SDI播出系统---使用GTX TX产生恢复时钟
    DRP端口描述
  • 原文地址:https://www.cnblogs.com/hellocheng/p/7393745.html
Copyright © 2011-2022 走看看