来源:模板题目描述:用线筛选素数,将指定范围的素数找出,
原创 2023-03-20 14:54:15
70阅读
为什么这样我们知道n=∏pkii 那么φ(n)=∏pki−1i∗(pi−1),易证 所以 假设n=i*j,j是质数 如果i是j的倍数,那么就是本来就含有1个j,又多了一个j,根据公式,所以是φ(n)=φ(i)∗j 否则,因为本来没有j,然后又多了1个j,根据公式,所以φ(n)=φ(i)∗(j−1)时间复杂度因为每个数只会出现一次,所以复杂度O(n)Codephi[1]=1; fo(i
原创 2022-12-26 18:46:01
82阅读
先介绍一下伟大的发明人:ZZX,就读于广东省中山市纪...
转载 2019-02-25 18:46:00
179阅读
2评论
从前有一个素数法叫埃拉托斯特尼法,它的思想很简单,把1-n以内素数的整数倍的数字划掉,留下的就全是素数,但是它的复杂度是O(NlglgN),对于大量不友好数据会跪,于是线性晒登场了。 #include <cstring> using namespace std; int prime[110000 ...
转载 2021-10-21 16:20:00
464阅读
2评论
#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
177阅读
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阅读
素数法(普通、朴素法、埃式法、欧拉法)1.题目2.分析3.代码传统普通朴素法埃式法欧拉法(线性)4.总结5.更新日志1.题目题目链接题目描述**输入一个自然数
原创 2022-05-10 23:10:37
500阅读
题目链接: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
262阅读
素数,其实是将合数给掉的一个过程。求某个大小范围内的素数个数,是用到素数的最最基础的问题。本文中介绍了判断单个数是否为素数的方法与埃氏法、欧拉法两种素数。 ...
转载 2021-08-13 21:39:00
2180阅读
2评论
题目链接: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
139阅读
【代码】素数法——欧拉
原创 2022-08-27 02:15:30
167阅读
#include<bits/stdc++.h>using namespace std;#define maxn 200005bool check[max
原创 2023-04-24 21:31:24
55阅读
1.普通法 O(nlogn)2.诶氏法 O(nloglogn)3.线性法 O(n)时间复杂度对比
原创 2022-06-14 11:09:32
122阅读
我就是我,一辈子都学不会线性的菜鸡 一篇非常好的博客
转载 2018-11-05 09:02:00
112阅读
2评论
###朴素法 不管是素数还是合数,都用来其后面的倍数 ###埃氏法 只使用素数的倍数可以把所有合数掉 ###线性法 用最小质因子就可以把所有合数掉 给定一个正整数 n,请你求出 1∼n 中质数的个数。 输入格式 共一行,包含整数 n。 输出格式 共一行,包含一个整数,表示 1∼n 中质数 ...
转载 2021-10-12 14:47:00
122阅读
法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。 第一种:普通法。时间复杂度是O(nlogn),不足之处在于一个合数可能被筛选多次。void Prime ()//n是个数,标记为1则不是素数{ memset(tag,0,sizeof(tag)...
原创 2022-03-10 16:25:55
79阅读
一种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
64阅读
    #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #define ll long long using namespace std; const int mx = 1e5; int prim[20...
原创 2022-10-19 16:11:22
49阅读
给定一个正整数n,请你求出1~n中质数的个数。输入格式共一行,包含整数n。输出格式共一行,包含一个整数,表示1~n中质数的
原创 2022-11-07 13:56:28
55阅读
bool ispri...
原创 2022-11-02 15:04:23
152阅读
  • 1
  • 2
  • 3
  • 4
  • 5