首页 > 编程语言 >基础模板/算法

基础模板/算法

时间:2024-02-03 09:12:59浏览次数:25  
标签:prime int 基础 素数 break 算法 flag 模板

线性筛求素数

#include<bits/stdc++.h>
using namespace std;

const int N = 5e7+50;

int n, tot, prime[N];  //prime存储所有素数
bool flag[N];   //判断是否为素数

int main(){

    scanf("%d", &n);
    
    //初始化,flag全部置为true
    for(int i=1; i<=n; i++) flag[i] = true;

    for(int i=2; i<=n; i++)
    {
        if(flag[i])   //如果i是素数就将其存储在prime
            prime[++tot] = i;
        
        /* 线性筛的核心
        每循环到一个i就将所有已知素数与它的乘积标记为不是素数 */
        for(int j=1; j<=tot; j++){
            if(prime[j]*i > n) break; //容易明白,因为最大是n
            flag[i*prime[j]] = false;
            if(i%prime[j] == 0) break;
            //i是某素数乘积,则i*任何数也是该素数乘积(那么肯定被判断过了)
            //两个判断都必须,不然会超时
        }
    }

    for(int i=1; i<=tot; i++){
        printf("%d\n",prime[i]);
    }
 
return 0;
}

标签:prime,int,基础,素数,break,算法,flag,模板
From: https://www.cnblogs.com/zyzAqr/p/18004330

相关文章

  • 第五章:面向对象编程(基础)
    面向对象概述软件开发方法:面向过程和面向对象面向过程:关注点在实现功能的步骤上PO:ProcedureOriented。代表语言:C语言面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。例如开汽车:启动、踩离合、挂挡、松离合......
  • 解析几何基础 反比例函数
    若\(k\)相等,两直线平行\[A(x_1,y_1),B(x_2,y_2)\]\[K=\frac{y_1-y_2}{x_1-x_2}=\frac{y_2-y_1}{x_2-x_1}\]反比例函数\[\begin{cases}y=\frac{k}{x}(k\neq0)&k\rightarrow比例系数(常见)\\y=kx^{-1}(k\neq0)\\xy=k(k\neq0)\end{cases}\]双......
  • 解析几何基础 坐标系与函数
    定义与概念正交坐标系有序实数对※在轴上的点不在象限内\(y=0\quad\quadx\)轴\(\quad\)平行于\(x\)轴的一条直线\(x=0\quad\quady\)轴\(\quad\)平行于\(y\)轴的一条直线点到轴的距离\[A(x,y)=\begin{cases}d_{A\simy}=|m-y|&y=m\\d_{A......
  • IValueConverter的基础用法
    1、我们在做工控项目的时候通常设置配方的上下限这个时候要求OK数在上下限范围之内,否则NG首先我们绑定一个简单的List用来展示数据,我这里用学生Age来展示<ListViewItemsSource="{BindingDataList}"Margin="20"><ListView.View><GridView><Gr......
  • Python数据结构与算法03-单循环链表
    单循环链表classListNode:def__init__(self,val,next=None):self.val=valself.next=nextclassSingleLoopLinkList:def__init__(self,node=None):self.__head=nodeifnode:#如果不是空链表node.next=node......
  • 【模板】AC 自动机
    和“阿狸的打字机”那道题很类似,也是把询问全部放到树上,拓扑排序一遍求解点击查看代码#include<bits/stdc++.h>usingnamespacestd;strings;intt[200005][26],tot,fail[200005],ans[200005],cnt[200005],d[200005];vector<int>g[200005];queue<int>q;intread1(){......
  • Python 机器学习 K-近邻算法 KD树
    在使用K-近邻(KNN)算法时,kd树(k-dimensionaltree)是一种用于减少计算距离次数从而提高搜索效率的数据结构。kd树是一种特殊的二叉树,用于存储k维空间中的数据点,使得搜索最近邻点更加高效。KD树的构造过程是将数据分割成更小的区域,直到每个区域满足特定的终止条件。1、构建KD树在k......
  • 压缩算法_quicklz接口demo
    1quicklz  quicklz是单片机上一个常见的压缩算法,具体原理没有文档和hash表的相关基础我就不去深究了;  只需要将fileSrc.txt放在桌面,代码可以使用vscode的mingw直接编译;2quicklz源码quicklz.h/***quicklz.h*********************************************************......
  • 单源正权最短路径——Dijkstra算法
    目录问题引入思路一览算法原理code问题引入给出n点m边,其中边的权值皆为非负数,要求快速给出一个点到其余点的最短距离思路一览dfs遍历维护最短距离floyd算法算全源最短,但是这玩意时间复杂度O(n3),最多也就1000个点左右主角Dijkstra算法算法原理主要是以源点为根节点逐步构......
  • 基础算法(七)高精度除法模板
    模板如下#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;vector<int>div(vector<int>&A,intB,int&r){vector<int>C;for(inti=0;i<A.size();i++){r=r*10+A[i];......