1.1 定义 厄拉多塞到底是怎样筛选素数的呢?他造了一张1到50的素数表,首先写上1到50的所有自然数,然后先划去1,把2留下,再划去其他所有2的倍数,把3留下。再划去其他所有3的倍数,把5留下。又划去其他所有5的倍数……依此类推,可以得到50以内的所有素数。这就是著名的“厄拉多塞筛法”。 1.2计 ...
分类:
其他好文 时间:
2020-12-08 12:45:58
阅读次数:
4
Eratosthenes筛法,快速求素数。 时间复杂度 O(nlogn)。 思想 对于每个不超过n的非负整数p,删除2p,3p,4p,......,当处理完所有数后,还没有被删除的就是素数。 代码 #include <iostream> using namespace std; /** * Erat ...
分类:
其他好文 时间:
2020-11-19 12:19:29
阅读次数:
5
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #define MAXN 100000 using namespace std; int pri[MAXN];///质数数列 bool vis[MAXN ...
分类:
其他好文 时间:
2020-11-08 17:07:41
阅读次数:
13
1.素数判断。 直接暴力判断,复杂度是根号级别。 2.筛选法。 普通筛法,对每个数,将其倍数全部标记。 复杂度是O(n/1+n/2+...+n/n),调和级数,O(nlogn)级别。 高级一点的筛法,我们发现,一个合数的倍数会被自己的因子提前标记,所以只需要对素数的倍数进行标记。 复杂度...我忘了 ...
分类:
其他好文 时间:
2020-10-10 16:55:29
阅读次数:
17
RT 考试的时候口胡出来的,正确性不会证,不过貌似100000内的数都是对的(现在已经会了,在此鸣谢gyz大佬) #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=5e7+10,max ...
分类:
其他好文 时间:
2020-09-24 21:27:32
阅读次数:
46
用筛选法求100之内的素数 【答案解析】 素数:约数为1和该数本身的数字称为素数,即质数 筛选法:又称为筛法。先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都 ...
分类:
其他好文 时间:
2020-07-27 17:40:21
阅读次数:
59
类型:有关素数的基础算法 思路:埃氏筛选 AC代码: #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int MAX_N=10000000; int prime[MAX_N]; b ...
分类:
其他好文 时间:
2020-07-26 01:30:40
阅读次数:
73
今天我们讲了一大堆数论的东西,目前本人稍微掌握一些的便是素数筛法,下面为了保护着珍贵的遗产,我决定写一篇博客来记录一下, 谈到素数筛法,相信大家岁熟悉的是暴力筛,我们大家只需要把数n的前1到sqrt(n)中所有的质数拿来和这个数n除一下看一下能否整除,如果能够整除,说明这个n是素数,然后就依次这样判 ...
分类:
其他好文 时间:
2020-07-17 16:15:49
阅读次数:
51
#T1 搜索 和以前做过一道关于排序的题有亿点点像,看到这么小的数据范围竟然脑抽没去想搜索.... #T2 筛法 换个方向思考,我们考虑这个数是几个数的倍数 #include <bits/stdc++.h> using namespace std; const int maxn = 1000000+ ...
分类:
其他好文 时间:
2020-07-12 22:15:34
阅读次数:
66
朴素版筛选质数 时间复杂度O(nlogn) int primes[N], cnt; // primes[]存储所有素数 bool st[N]; // st[x]存储x是否被筛掉 void get_primes(int n) { for (int i = 2; i <= n; i ++ ) { if ...