#include <bits/stdc++.h> using namespace std; const int N = 1e6+5; bool st[N]; int cnt; int primes[N]; void get_primes(int n){ // O(nlogn) 朴素法 for(int i = 2; i <= n; ++i){ if(!st[i]){
转载 2021-04-21 11:34:01
186阅读
2评论
1. Eratosthenes法(埃氏)流程:对于每一个质数\(p\),标注出范围内所有\(p\)的倍数为合数,剩下的就是质数。int cnt, prm[MAX], v[MAX];void Eratosthenes(){for (int i = 2; i <= N; i++)if (!v[i]) {//如果未被标记,则是质数prm[++cnt] = i;for (int j = 2; i
转载 2021-08-04 12:47:00
132阅读
素数法(普通、朴素法、埃式法、欧拉法)1.题目2.分析3.代码传统普通朴素法埃式法欧拉法(线性)4.总结5.更新日志1.题目题目链接题目描述**输入一个自然数
原创 2022-05-10 23:10:37
573阅读
发个爽文引流一下 文章目录​​Question​​​​Ideas​​​​Code​​ Question给定一个正整数 n,请你求出 1∼n 中质数的个数。输入格式 共一行,包含整数 n。输出格式 共一行,包含一个整数,表示 1∼n 中质数的个数。数据范围 1≤n≤106 输入样例: 8 输出样例: 4 Ideas三种方法,再学不会来打我 CodeN = int(1e6+10)primes
原创 2022-07-01 13:27:55
45阅读
从前有一个素数法叫埃拉托斯特尼法,它的思想很简单,把1-n以内素数的整数倍的数字划掉,留下的就全是素数,但是它的复杂度是O(NlglgN),对于大量不友好数据会跪,于是线性晒登场了。 #include <cstring> using namespace std; int prime[110000 ...
转载 2021-10-21 16:20:00
513阅读
2评论
生活艰难,遇到事情,无论是激动也好,伤心也好,都应当有一份坚定的信念,勇往直前,风雨之后总会有彩虹。 我们应该庆幸自己生在这个年代,曾听父母讲起过他们的那一辈,每天为生活奔波,吃不饱,穿不暖,尤其最深的记忆的母亲给我讲起过她小时候,只上过几天的学,然后回家帮着做农活,6、7岁已经扛起了大人们应该履行的职责,每每听到这,总会感到心酸,有记得自己小时候也有挨过饿的时候,那是92年的时候,中国大部分地区中有部分还没有解决温饱,很不幸我们那边就是,这个时候,做的饭大部分父母都让给我...
原创 2021-07-29 09:57:47
163阅读
素数,其实是将合数给掉的一个过程。求某个大小范围内的素数个数,是用到素数的最最基础的问题。本文中介绍了判断单个数是否为素数的方法与埃氏法、欧拉法两种素数。 ...
转载 2021-08-13 21:39:00
2421阅读
2评论
埃拉托斯特尼素数其主要原理就是从2开始如果一个数时素数,那么这个素数乘任何正整数一定是合数。这里用一个标记数组记录某一个数是不是素数。int flag[100005]={1,1};memset(flag, 0, sizeof(flag));for(int i=2; i<=sqrt(100005); i++) if(flag[i]==0) for(int j=2; i*...
原创 2022-06-17 13:33:04
56阅读
题目链接:https://www.acwing.com/problem/content/description/870/时/空限制:1s / 64MB题目描述给定一个正整数n,请你求出1~n中质数的个数。输入格式共一行,包含整数n。输出格式共一行,包含一个整数,表示1~n中质数的个数。数据范围1≤n≤10^6输入样例8输出样例4解题...
原创 2022-02-03 14:16:15
151阅读
【代码】素数法——欧拉
原创 2022-08-27 02:15:30
202阅读
题目链接:https://www.acwing.com/problem/content/description/870/时/空限制:1s / 64MB题目描述给定一个正整数n,请你求出1~n中质数的个数。输入格式共一行,包含整数n。输出格式共一行,包含一个整数,表示1~n中质数的个数。数据范围1≤n≤10^6输入样例8输出样例4解题...
原创 2021-07-13 16:28:02
273阅读
#include<bits/stdc++.h>using namespace std;#define maxn 200005bool check[max
原创 2023-04-24 21:31:24
80阅读
bool ispri...
原创 2022-11-02 15:04:23
154阅读
法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。 第一种:普通法。时间复杂度是O(nlogn),不足之处在于一个合数可能被筛选多次。void Prime ()//n是个数,标记为1则不是素数{ memset(tag,0,sizeof(tag)...
原创 2021-07-13 15:53:14
189阅读
埃拉托斯特尼法(sieve of Eratosthenes ) 是古希腊数学家埃拉托斯特尼发明的计算素数的方法。对于求解不大于 n 的所有素数,我们先找出 sqrt(n) 内的 所有素数p1到pk ,其中 k = sqrt(n) ,依次剔除 Pi 的倍数,剩下的所有数都是素数。 具体操作如上述 图
转载 2020-05-08 21:25:00
102阅读
2评论
素数较为普遍的有两种,一般和线性,众所周知,线性要快那么一点。 ...
转载 2021-08-24 11:18:00
90阅读
2评论
我就是我,一辈子都学不会线性的菜鸡 一篇非常好的博客
转载 2018-11-05 09:02:00
126阅读
2评论
###朴素法 不管是素数还是合数,都用来其后面的倍数 ###埃氏法 只使用素数的倍数可以把所有合数掉 ###线性法 用最小质因子就可以把所有合数掉 给定一个正整数 n,请你求出 1∼n 中质数的个数。 输入格式 共一行,包含整数 n。 输出格式 共一行,包含一个整数,表示 1∼n 中质数 ...
转载 2021-10-12 14:47:00
138阅读
法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。 第一种:普通法。时间复杂度是O(nlogn),不足之处在于一个合数可能被筛选多次。void Prime ()//n是个数,标记为1则不是素数{ memset(tag,0,sizeof(tag)...
原创 2022-03-10 16:25:55
104阅读
一种O(n)求质数的算法这个算法的精髓是每个 合数 只会被自己的 最小质因子  一次看看代码理解void pre(int n){ for(int i=2;i<=n;i++){ if(isp[i]==0){//是质数 prim[++cnt]=i;//质数 p[i]=i; //最大质因子,质数的最大质因子是它本身
原创 2022-07-05 10:17:24
84阅读
  • 1
  • 2
  • 3
  • 4
  • 5