模板线性筛求素数(代码片段)

wky1366365447 wky1366365447     2023-01-15     528

关键词:

线性筛求素数

 1 #include <iostream>
 2 #include <cstring>
 3 #include <algorithm>
 4 #include <cstdio>
 5 
 6 const int MAX_N = 10000000 + 10;
 7 
 8 bool vis[MAX_N];
 9 int Prime[MAX_N >> 1];
10 inline void GetPrime(int n) 
11     memset(vis, false, sizeof(vis));
12     vis[1] = true;
13     
14     int cnt = 0;
15     for (int i = 2; i <= n; i++) 
16         if (!vis[i]) Prime[++cnt] = i;
17         for (int j = 1; j <= cnt && i * Prime[j] <= n; j++) 
18             vis[i * Prime[j]] = true;
19             if (i * Prime[j] == 0) break; 
20         
21     
22 
23 
24 int main() 
25     int n, m; scanf("%d%d", &n, &m);
26     
27     GetPrime(n);
28     while (m--) 
29         int x; scanf("%d", &x);
30         if (!vis[x]) puts("Yes");
31         else puts("No");
32     
33     
34     return 0;
35 

 

p3383模板线性筛素数(代码片段)

P3383【模板】线性筛素数欧拉筛O(n)#include<iostream>#include<cstdio>usingnamespacestd;intn,m,cnt,prime[10000002],v[10000002];//prime:素数表v:存某数的最小质因数intmain()scanf("%d%d",&n,&m);for(inti=2;i< 查看详情

模板线性筛素数(代码片段)

memset(check,false,sizeofcheck);inttot=0;for(inti=2;i<=N;++i)if(!check[i])prime[tot++]=i;for(intj=0;j<tot;++j)if(i*prime[j]>N)break;check[i*prime[j]]=true;if(i%prime[j]==0)break; 查看详情

luogu3383模板线性筛素数(代码片段)

我太菜了%韩神1#include<iostream>2#include<cstdio>3#include<cmath>4#include<cstdlib>5#include<cstring>6#include<algorithm>7#include<vector>8#include<queue>9#de 查看详情

p3912线性筛素数的模板(代码片段)

这绿题贼水......原理我不讲了,随便拿张草稿纸推一下就明白了。1#include<cstdio>2usingnamespacestd;3constlonglongintN=100000020;4intsu[N],ans,top;5boolvis[N];6voidshai(intb)78for(inti=2;i<=b;i++)910if(!vis[i])1112su[to 查看详情

[模板]线性筛素数(欧拉筛法)(代码片段)

用途$O(n)$处理出n以内所有素数原理使用合数=最大因数(除1和本身外)*最小质因数的原理来筛,每个数只会被筛一次对于每个数i,令它是某数的最大因数,然后从小到大地找<=i的素数j,则i*j是合数直到找到某个j使得$i\%j==0$,因... 查看详情

p3383模板线性筛素数(代码片段)

//P3383【模板】线性筛素数#include<bits/stdc++.h>usingnamespacestd;intis_prime[10000005];voidFind_prime(intn)memset(is_prime,1,sizeof(is_prime));is_prime[1]=0;for(inti=2;i*i<=n;i++)if(is_prime[i])for(intj=i*i;j<=n;j+=i)is_prime[j]=0;intmain()intn,m;scanf("%d%d",&n,&m);Fin... 查看详情

浅谈线性素数筛(代码片段)

...小的质因数筛掉它,所以时间复杂度保证是线性的。  模板:https://www.luogu.org/problemnew/show/P3383代码:1#include<iostream> 查看详情

p3383模板线性筛素数(代码片段)

P3383【模板】线性筛素数埃氏筛->欧拉筛普通埃氏筛(O(nlognlogn))for(inti=2;i<=n;i++)//注意终止条件if(!notpri[i])for(intj=2;j*i<=n;j++)notpri[i*j]=true;优化for(inti=2;i<=n;i++)//到根号if(!notpri[i])for(intj=i;j*i<=n;j++)//j从i开始,因为... 查看详情

弄了个欧拉筛求素数

最近遇到某方面的内容和欧拉筛有关系,于是就自己重新弄了个欧拉筛,当然记得以前自己曾经写过一次,这次自己完全写起来发现和第一次写的主体方面还是差不多(就那么一个细微的区别),可以参考一下程序代码:#include<stdio.h&g... 查看详情

noip蒟蒻专用模板(代码片段)

目录模板数论线性晒素数裴蜀定理矩阵快速幂图论最小生成树SPFA数据结构树状数组ST表字符串kmp模板数论线性晒素数#include<bits/stdc++.h>usingnamespacestd;intn,notp[20000000],pri[2000000],tot;voidget()notp[1]=1;for(inti=2;i<=n;i++)if(!notp[i])pri 查看详情

素数筛(代码片段)

欧拉筛求小于(n)的所有正整数中的素数集合(code:)for(lli=2;i<=n;++i)if(!tag[i])pri[++tot]=i;for(llj=1;j<=tot;++j)llk=i*pri[j];if(k>n)break;tag[k]=true;if(i%pri[j]==0)break;每个数只会被最小的素因子筛一次 查看详情

p3383模板线性筛素数(代码片段)

题目描述如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内)输入输出格式输入格式: 第一行包含两个正整数N、M,分别表示查询的范围和查询的个数。接下来M行每行包含一个不小于1且... 查看详情

[luogup3383]模板线性筛素数(代码片段)

...es、No、No、Yes。分析这题的解法都写在题目里了嘻嘻嘻(模板题不都是这样吗,你个大菜鸡(自言自语.gif)Ofcourse,这题还可以用别的更优的素数筛法,比如MillerRabin之类的,之后我会考虑写一篇文章具体总结一下。但是这篇题解... 查看详情

筛素数算法——线性筛素数算法(代码片段)

前言线性筛是筛素数一种比较常用的方法(实际上,它的用途含有很多,如筛(mu,phi)等玄学的函数)。它的时间复杂度近似于(O(n))。代码(代码后面有解析)#include<bits/stdc++.h>usingnamespacestd;intn;map<int,int>Is_Prime;//保存每一... 查看详情

(模板)线性筛素数

————————————————————————————&mda 查看详情

普及组模板——线性筛素数

题目:【模板】线性筛素数(洛谷_3383)#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>usingnamespacestd;inlineintread(){intt=1,num=0;charc=getchar();w 查看详情

线性复杂度的素数筛选法(代码片段)

//#include"cstdio"//#include"cstring"//usingnamespacestd;//#definemaxn100000//求maxn范围内的素数//longlongsu[maxn],cnt;//boolisprime[maxn];//voidprime()////cnt=1;//memset(isprime,1,sizeof(isprime));//初始化认为所 查看详情

线性筛素数(代码片段)

在洛谷上找到的一篇非常详细的题解想要快速地筛出一定上限内的素数?下面这种方法可以保证范围内的每个合数都被删掉(在bool数组里面标记为非素数),而且任一合数只被:“最小质因数×最大因数(非自己)=这个... 查看详情