• 2024-09-27牛客练习赛129 A-数数
    复习一下埃氏筛,快速拿出n以内质数。该题要是一个一个去计算“偶数”会超时非常多。题意中”奇数“的本质是质数及质数的n次幂,所以先求出n以内所有质数及其n次幂的个数,就能计算出“偶数”的个数。1#include<bits/stdc++.h>2usingnamespacestd;3vector<bool>isPrime(
  • 2024-09-159月15日总结
    今天呢,将剩余的码题集的习题搞完了,在这几个题中,虽然大部分是一些暴力是可以解决的,但是,几乎所有的题都需要你考虑时间复杂度,将具体的代码进行优化,例如今天我学会了一个名为线性筛(欧拉筛)的一个为素数寻找计算的算法知识具体的代码实现如下:for(inti=2;i<=x;i++){if(!judge[i
  • 2024-08-06数论——绝对素数、素数筛法、埃氏筛法、欧拉筛法、最大公约数
    绝对素数绝对素数是指一个素数在其十进制表示下,无论是从左向右读还是从右向左读,所得到的数仍然是素数。例如,13是一个素数,从右向左读是31,31也是素数,所以13是一个绝对素数。#include<iostream>#include<cmath>usingnamespacestd;boolisPrime(intnum){if(
  • 2024-08-04筛选质数的三个方法:1.素数判断,2埃氏法,3欧拉法。
    文章目录前言一、素数是什么?二、算法使用原理1.合数:合数除了1和它本身以外,还有其他因数。与素数相对,素数只有1和它本身两个因数,而合数则至少有三个因数。2.我们理解了合数的概念后,可以知道一个合数可以由至少三个因数构成如,6=1*2*3,说明所有素数的倍数都可以是合数,那么我
  • 2024-06-19蓝桥 3205.小明的素数对(内含试除法,埃氏筛,欧拉筛代码)
    目录题目题目解读思路代码注总结试除法埃氏筛欧拉筛题目题目解读题目意思很简单,就是输入一个树n,然后求1-n里的素数,然后求这些素数里满足他们两两之差也是素数的对数有多少对。思路思路很简单,可直接利用埃式筛选法筛(或利用欧式筛法)筛选出1-n里的素数有什么,然
  • 2024-06-17埃氏筛+欧拉筛 (c++)
    求出从2到n的素数埃氏筛方法:筛2的倍数,3的倍数,4的倍数......时间复杂度:O(n·loglogn)缺点:一个数筛了多次,比如6会被2筛,被3筛,被6筛,浪费时间下面的代码中,f是是否是素数的标记数组,N是要筛的个数f[1]=1;for(inti=2;i*i<=N;i++)if(f[i]==0){for(intj=i+i;
  • 2024-05-28算法课程笔记——素数朴素判定&埃氏筛法
    算法课程笔记——素数朴素判定&埃氏筛法sqrt返回浮点数,而且这样可防溢出优化i*i会更快
  • 2024-03-30《算法笔记》系列----质数的判断(埃氏筛法)
    目录一、朴素算法二、埃氏筛法1、与朴素算法对比2、算法介绍   3、例题即代码实现一、朴素算法 从素数的定义中可以知道,一个整数n要被判断为素数,需要判断n是否能被2.3.n-1中的一个整除。只2,3..n-1都不能整除n,n才能判定为素数,而只要有一个能整除n的数出现,n就
  • 2024-02-08质数基础筛法
    目录埃氏筛线性筛埃氏筛埃氏筛是一种筛素数的方法,埃氏筛的思想很重要,主要是时间复杂度朴素的埃氏筛的时间复杂度是\(O(nlogn)\)这个复杂度是调和级数vector<int>p;intvis[N];voidsolve(){ rep(i,2,n){ if(!vis[i]) p.pb(i); for(intj=i+i;j<=n;j+=i) vis[j]=1;
  • 2023-10-29浅谈筛法——埃氏筛
    前置芝士:见浅谈筛法——普通筛例·1素数个数:运用上一篇的知识,可得出以下代码:#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintmaxn=1e8+5;intn,ans;boolprime(intx){ if(x==1){ return0; } if(x==2){ return1; } for(inti=2
  • 2023-10-09素数的判定:筛法
    素数很有用,特别是在密码学领域中,比如RSA中很重要的一步就是寻找两个比较大的素数,通常的做法是先随机生成一个大整数,然后使用一些素性判定的方法,比如费马素性测试。在算法竞赛的数论题目中,素数也很常见,通常的做法是先找出一定范围内的所有素数,用到时再查表,筛法就可以做到。1.埃氏
  • 2023-09-22素数重学笔记
    之前都没有怎么理解,现在来复习一下。试除法从\(2\)枚举到\(\lfloor\sqrtn\rfloor\)判断能否整除。朴素筛法从小到大枚举每个数,将范围内它的倍数全部标记为合数。显然就是调和级数,时间复杂度\(O(n\logn)\)。埃氏筛观察到一个合数必定可以通过某个质数乘上一个数得到
  • 2023-07-30素数筛
    埃氏筛,时间复杂度o(n*log(log2n)),接近线性1for(inti=2;i<=n/i;i++)2if(!pri[i])//若i未被筛掉则必定是质数3for(intj=i*i;j<=n;j+=i)//枚举i的倍数必定是合数4pri[j]=1;欧拉筛(线性筛),时间复杂度o(
  • 2023-06-13(数论)判断素数(朴素,根号,埃氏筛,欧拉筛线性筛)
    //最基本求一个素数(on),(osqrt(n))#include<bits/stdc++.h>usingnamespacestd;intmain(){intn;cin>>n;for(inti=2;i<n;i++)//o(n)if(n%i==0){cout<<"no";return0;}for(i
  • 2023-05-26有关素数的基础算法 素性测试 埃氏筛法
    所谓素数,是指恰好有两个约数的正整数。因为n的约数都小于n,所以只需要检查2~ n-1之间所有的整数是否整除n就能判定n是不是素数。如果d是n的约数,那么n/d也是n的约数。由n=d*n/d可知min(d,n/d)  ,所以只需要检查2~ 之间的所有整数就足够了。同理可知,整数分解和约数枚举都
  • 2023-05-24埃氏筛 & 欧拉筛
    Part1埃氏筛埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。---百度词条思想从一数列中最小质数开始,寻找其倍数,即合数,筛去直至最
  • 2023-05-13质数 埃氏
    #include<bits/stdc++.h>usingnamespacestd;defineN1000000intb[1000005],n,cnt;intmain(){ scanf("%d",&n); for(inti=2;i*i<=N;i++){ for(intj=i*i;j<=N;j+=i) b[j]=1; } for(inti=2;i<=N;i++)
  • 2023-03-27LeetCode 周赛 338,贪心 / 埃氏筛 / 欧氏线性筛 / 前缀和 / 二分查找 / 拓扑排序
    本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]提问。大家好,我是小彭。上周末是LeetCode第338场周赛,你参加了吗?这场周赛覆盖的知识点很多,第四题
  • 2023-03-27浅析数论--埃氏筛/欧拉筛/杜教筛
    \(\mathcal{0x01绪论}\)\(\mathcal{质数的判定试除法or六倍原理}\)一个合数的约数总是成对出现的,如果\(d|n\)(\(d\)能被\(n\)整除),那么\((n/d)|n\),因此我们判断一个
  • 2023-02-24埃氏筛 & 欧拉筛
    Part1埃氏筛埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有
  • 2023-02-20C\C++ 埃氏筛法
     1埃氏筛法的基本思想:从2开始,将每个质数的倍数都标记成合数,以达到筛选素数的目的。1#include<iostream>2usingnamespacestd;3constintmaxn=1000;4i
  • 2023-02-05埃氏筛和线性筛
    埃氏筛我们考虑这样一个事实:如果x是质数,那么大于x的倍数2x,3x,…一定不是质数.我们设isPrime[i]表示数i是不是质数,如果是质数则为1,否则为0。从小到大遍历每个
  • 2023-01-02质数判断——暴力方法、埃氏筛与线性筛
    质数判断  问题背景为:我们希望判断前n个数是否为质数,即得到isPrime[n+1](此处沿用java语言定义)数组。暴力方法  传统意义上的对质数的判断方法,是依据质数的定义—
  • 2023-01-01[第326场周赛]分解质因数,埃氏筛,欧拉筛
    leetcode新年福利,本次周赛没有Hard难度的题目,然后我就第一次AK了~总的来说不是很难,涉及到了三个算法,在此记录一下。分解质因数题目链接:​​6279.数组乘积中的不同质因数数
  • 2022-11-21每日一题1--埃氏筛法学习
    我们今天要介绍的埃拉托斯特尼算法就是他发明的用来筛选素数的方法,为了方便我们一般简称为埃式筛法或者筛法。埃式筛法的思路非常简单,就是用已经筛选出来的素数去过滤所有