首页 > 其他分享 >线性筛素数(欧拉筛)

线性筛素数(欧拉筛)

时间:2023-09-03 17:55:07浏览次数:37  
标签:10 le int 素数 线性 include plist 欧拉

题目描述

求 \(1,2,\cdots,N\) 中素数的个数。

输入格式

一行一个整数 \(N\)。

输出格式

一行一个整数,表示素数的个数。

样例 #1

样例输入 #1

10

样例输出 #1

4

提示

对于 \(40\%\) 的数据,\(1 \le N \le 10^6\)。

对于 \(80\%\) 的数据,\(1 \le N \le 10^7\)。

对于 \(100\%\) 的数据,\(1 \le N \le 10^8\)。

对于 $ 10^8 $ 的数据 ,寻常的筛素数方法往往会TLE。
因此我们采用欧拉筛,来达到近似 O(n) 的时间复杂度

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int N = 1e8 + 50;
int plist[N],cnt,n;
bool not_prime[N];
// plist[] 素数表   not_prime[] 标记表 true 为 合数  false 为素数
int main()
{
    cin>>n;
    for(int i=2;i<=n;i++)
    {
        if(not_prime[i] == false) plist[++cnt] = i;
        for(int j = 1;j <= cnt;j++)
        {
            int x; x = i * plist[j];
            if(x > n) break;// 超出 数据范围 直接停止循环
            not_prime[x] = true; // 将 质数的倍数标记为 合数
            if(i % plist[j] == 0) break; // i 只要找到一个素数因子 就可退出循环
        }
    }
    cout<<cnt;
    return 0;
}

经过 多次的循环减枝 不断优化双重循环的时间复杂度,并将质数按照顺序储存于数组中

标签:10,le,int,素数,线性,include,plist,欧拉
From: https://www.cnblogs.com/Elgina/p/17675280.html

相关文章

  • 编写判断一个正整数是否为素数的函数
    编写判断一个正整数是否为素数的函数自己搞的,还请斧正。#include <stdio.h>void  prime(int m);                         int main(){    int a[10],i;      for(i=0;i<10;i++)    {        scanf("%d",&a[......
  • MIT 18.06 线性代数 - 22. 对角化和矩阵的幂
    关于斐波那契数列计算第n个数,使用矩阵特征向量和特征值求解:Fibonacci数列的定义是:\(F(0)=0\),\(F(1)=1\)并且对于\(n>1\),\(F(n)=F(n-1)+F(n-2)\)。我们可以使用线性代数中的特征向量和特征值来求解Fibonacci数列。首先,我们可以将Fibonacci数列写为一个线性系统的形式:\[\b......
  • 多元线性回归分析
    回归分析的任务就是:通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y的目的。常见的回归有5类:线性回归0-1回归定序回归计数回归生存回归其划分的依据是因变量Y的类型相关性首先要区分相关性不等于因果性,比如研究表明雪糕销量越高游泳死......
  • 《线性代数》6. 线性相关、线性无关与生成空间
    线性组合回忆一下向量的两个最基本的运算:向量加法:\(\vec{v}+\vec{w}\)向量乘法:\(k\vec{v}\)这两个基本运算构建了线性代数中最重要的一个概念:线性组合。对于若干个\(n\)维向量\(\vec{v_{1}},\vec{v_{2}},\vec{v_{3}},...,\vec{v_{p}}\),那么\(k_{1}·\vec{v_{1}}+k......
  • P1463 [POI2001] [HAOI2007] 反素数 题解
    P1463[POI2001][HAOI2007]反素数题解可以发现,最大的不超过\(n\)的反素数就是\(1\simn\)中因数最多的数字。证明:设\(x,x\in[1,n]\)为\(1\simn\)中因数最多的数字,则\(x<y\len\)都不会成为答案,因为存在\(x<y\)因数比\(y\)多,同时也不会存在\(y'<x\)......
  • 向量,矩阵,线性基
    向量定义既有大小又有方向的量称为向量,记作$\vec{a}$。如果这个向量还有一个起点,那么它就成为了一条有向线段。有向线段三要素:起点,方向,长度。有向线段$\overrightarrowAB$......
  • 电动车摩托车灯DC-DC降压恒流芯片AP5170支持线性调光95%高效率IC
    产品描述AP5170是一款效率高,稳定可靠的LED灯恒流驱动控制芯片,内置高精度比较器,固定关断时间控制电路,恒流驱动电路等,特别适合大功率LED恒流驱动。AP5170采用ESOP8封装,散热片内置接SW脚,通过调节外置电流检测的电阻值来设置流过LED灯的电流,支持外加电压线性调光,最大电流......
  • LED车灯驱动DC-DC降压恒流芯片大功率高效率线性调光IC摩托车电动车手电筒
    产品描述AP5174是一款效率高,稳定可靠的LED灯恒流驱动控制芯片,内置高精度比较器,固定关断时间控制电路,恒流驱动电路等,特别适合大功率LED恒流驱动。AP5174采用ESOP8封装,散热片内置接SW脚,通过调节外置电流检测的电阻值来设置流过LED灯的电流,支持外加电压线性调光,最大电流......
  • 程序员的线性代数教程!Jupyter 代码和视频可能更适合你
    红色石头的个人博客:www.redstonewill.com推荐一份适合程序员的线性代数教程,包含理论和源码。教程地址为:https://github.com/fastai/numerical-linear-algebra本教程的重点是以下问题:我们如何以可接受的速度和可接受的精度进行矩阵计算?这份教程来自于旧金山大学的分析学硕士2017暑......
  • AP51656 PWM和线性调光 LED车灯电源驱动IC 兼容替代PT4115 PT4205
    产品描述AP51656是一款连续电感电流导通模式的降压恒流源用于驱动一颗或多颗串联LED输入电压范围从5V到60V,输出电流可达1.5A。根据不同的输入电压和外部器件,可以驱动高达数十瓦的LED。内置功率开关,采用高端电流采样设置LED平均电流,通过DIM引脚可以接受模拟调光和很宽范围......