当前位置: 首页 > 编程日记 > 正文

欧拉函数+素数筛

欧拉函数,就是欧拉发现的一个关于求素数的的公式,然后我们编个函数实现这个公式。

欧拉发现求小于等于n的正整数中有多少个数与n互质可以用这个公式:

euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的所有素因数,x是不为0的整数。euler(1)=1(唯一和1互质的数就是1本身)。

欧拉公式的延伸:一个数的所有质因子之和是euler(n)*n/2。

其实直接看模板加注解想想就能看懂

筛选的原理就是找出n的因子,剔除含有n的因子的数,即剔除与n不互质的数

既然是求与n互质的个数,那我们可以直接筛选,看模板:

int phi(int n)

{    int res=n;                  /假设现有n个数与n互质,开始筛选剔除

for(i=2;i*i<=n;i++)

{    if(n%i==0)                /若这个数是n的因子,减去n以下含有这个因子的数个数,假设n=8,小于等于8,2为公因子的有8/2=4个

{   res-=res/i;

while(n%i==0)            /将n不断整除这个因子

n=n/i;

}

}

if(n>1)             /若n大于1,则此时的n也是一个除1以外的因子

res-=res/n;

return res;

}

有时候还用到多个数的欧拉值,因此需要对1到n的数都求出欧拉值,就是打表。

将1到n的欧拉值求出并存储到数组,筛选法,代码:

void phi(int n)                         上边的看懂了,下边这个求多个数的也类似

{   for(int i=1;i<=n;i++)

p[i]=i;                   赋原值

for(int i=2;i<=n;i++)

if(p[i]==i)

{   for(int j=i;j<=n;j+=i)          筛选

p[j]=p[j]-p[j]/i;

}

}

素数筛:就是让你判断任意一个数是否为素数,若问一个求一个显然会超时,所以首先需要把素数都求出来,用筛选法求的,所以叫素数筛。

原理就是若一个数有除1和它本身以外的因子就将它标记不是素数,最后无标记的就是素数。

直接看代码加注解:

#include <iostream>

#include <cstring>

#define MAX 1000001

int flag[MAX];

int main()

{    memset(flag,0,sizeof(flag));

flag[1]=1;               /1代表不是素数,0代表是素数

for(int i=4;i<MAX;i+=2)

flag[i]=1;              /先将偶数先标记不是

for(int i=3;i*i<MAX;i+=2)

for(int j=i*i;j<MAX;j+=i)   /奇数的倍数标记不是

flag[j]=1;

int n;

while(cin>>n)

{   if(flag[n]==0)

cout<<"YES"<<endl;

else

cout<<"NO"<<endl;

}

}

素数筛常用于让你判断大量素数,或求大量素数,当然如果数目很少,就按常规判断就好了

转载于:https://www.cnblogs.com/weiliuyby/p/5813837.html

相关文章:

对 Python 开发者而言,IPython 仍然是 Jupyter Notebook 的核心

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 Jupyter 项目提供的魔法般的开发体验很大程度上得益于它的 IPython 基因。 最近刚刚写过我为什么觉得觉得 Jupyter 项目&#xff08;特别是 Jupy…

LintCode 249. 统计前面比自己小的数的个数

给定一个整数数组&#xff08;下标由 0 到 n-1&#xff0c; n 表示数组的规模&#xff0c;取值范围由 0 到10000&#xff09;。对于数组中的每个 ai 元素&#xff0c;请计算 ai 前的数中比它小的元素的数量。 注意事项 We suggest you finish problem Segment Tree Build, Segm…

springboot过滤器排除掉一些url_理解这9大内置过滤器,才算是精通Shiro

小Hub领读&#xff1a;权限框架一般都是一堆过滤器、拦截器的组合运用&#xff0c;在shiro中&#xff0c;有多少个内置的过滤器你知道吗&#xff1f;在哪些场景用那些过滤器&#xff0c;这篇文章希望你能对shiro有个新的认识&#xff01;别忘了&#xff0c;点个 [在看] 支持一下…

安装APK,启动系统Activity

要同时设置data和type的话只能用函数setDataAndType private void installApk(File file) {Intent intent new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT"); // intent.setData(Uri.fromFile(fi…

EOS能不能囤?一篇文章搞懂EOS优缺点

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 EOS是一个基于区块链的开发平台&#xff0c;专为构建去中心化应用程序&#xff08;dApp&#xff09;而设计。EOS是一个开源项目&#xff0c;其源代…

JS 中的事件设计

看懂此文&#xff0c;不再困惑于 JS 中的事件设计 原文出处&#xff1a; aitangyong 抽空学习了下javascript和jquery的事件设计&#xff0c;收获颇大&#xff0c;总结此贴&#xff0c;和大家分享。 (一)事件绑定的几种方式 javascript给DOM绑定事件处理函数总的来说有2种方式…

‘百度杯’十月场web ---login

首先一看的题&#xff0c;既然是是web类的&#xff0c;就要查看源码&#xff0c;一看&#xff0c;最先有一行注释&#xff0c;估摸着是用户名和密码 果然登录上去了&#xff0c;显示一段乱码&#xff0c;源码也没有什么东西&#xff0c; 那就抓一次包吧 发现响应头里边有个sho…

oracle 与 client端执行结果不一致_不同模式下Spark应用的执行过程

根据应用执行的3个阶段&#xff0c;不同执行模式下各个阶段的执行逻辑不相同&#xff0c;本文分析不同模式下的执行逻辑。Yarn-Client模式的执行流程Yarn的组成Yarn是hadoop自带的资源管理框架&#xff0c;它的设计思想是&#xff1a;YARN的基本思想是将资源管理和作业调度/监视…

分享EOS加拿大的文章《REX——从源代码做技术解析》

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 已提议将丢失密钥恢复系统部署到EOS主网。 丢失密钥解决方案的最后一步已经在链上提出。最后一步是将丢失密钥解决方案智能合约部署到为此目的创建…

16.QT鼠标

头文件 1 #include <QMouseEvent> 2 #include <QStatusBar> 3 #include <QLabel> 1 protected: 2 //鼠标按下 3 void mousePressEvent(QMouseEvent *e); 4 //鼠标移动 5 void mouseMoveEvent(QMouseEvent *e); 6 //鼠标释放 7 void …

c++ windows获得当前工作目录文件_基于linux下Python文件操作

Python中的文件操作1、文件的打开与关闭想一想&#xff1a;如果想用word编写一份简历&#xff0c;应该有哪些流程呢&#xff1f;1、打开word软件&#xff0c;新建一个word文件2、写入个人简历信息3、保存文件4、关闭word软件同样&#xff0c;在操作文件的整体过程与使用word编写…

maven 插件

maven-enforcer-plugin https://maven.apache.org/enforcer/maven-enforcer-plugin/ https://maven.apache.org/enforcer/maven-enforcer-plugin/enforce-mojo.html http://maven.apache.org/enforcer/enforcer-rules/index.html转载于:https://www.cnblogs.com/SamuelSun/p/58…

数字货币EOS半年时间暴跌90%多,还可追捧吗?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 对财富上的自由&#xff0c;很多人认为这比感情来得容易多了。但是面对这个竞争激烈的社会&#xff0c;是兢兢业业的工作&#xff0c;还是投资房地产…

resnet keras 结构_Wandb用起来,一行Python代码实现Keras模型可视化

大数据文摘出品来源&#xff1a;wandb编译&#xff1a;邢畅、宁静在训练神经网络的过程中&#xff0c;我们可能会希望可视化网络的性能和中间的结构&#xff0c;很多可视化代码的冗长复杂使得我们望而却步&#xff0c;有没有一行代码就能解决可视化的所有问题呢&#xff1f;通过…

tensorflow学习笔记————分类MNIST数据集

在使用tensorflow分类MNIST数据集中&#xff0c;最容易遇到的问题是下载MNIST样本的问题。 一般是通过使用tensorflow内置的函数进行下载和加载&#xff0c; from tensorflow.examples.tutorials.mnist import input_data mnist input_data.read_data_sets("MNIST_data&q…

Build SSCLI20 under VS2008 full Document (完全手册)

以前build过几次sscli2都成功了&#xff0c;这次换了个新的环境&#xff0c;没想到出了一大堆的问题。折腾了半天&#xff0c;最终搞定&#xff0c;把解决问题的过程和方法都记录下来。 首先说说build的过程中参考过的链接和资源。 首先就是sscli自带的文档&#xff1a;Buildin…

vue 发展历程时间轴动画_PPT时间轴如何做出创意感?海量素材免费分享,网友:收藏...

时间轴页面&#xff0c;是工作型PPT中常见的页面之一。个人述职或者公司介绍PPT中&#xff0c;使用时间轴&#xff0c;能够让观众更加清晰地了解公司的发展历程。但是&#xff0c;很多人在制作时间轴页面时&#xff0c;往往是这样的效果&#xff1a;只有几行字和一根线&#xf…

[CQOI2014]数三角形 组合数 + 容斥 + gcd

推导过程 &#xff1a; 组合数容斥原理gcd 正确做法是暴力的一种优化&#xff0c;ans所有情况 - 平行坐标轴的三点共线 - 斜线三点共线 如果快速求斜线三点共线&#xff1a; 首先要知道一个结论&#xff0c;对于点(a,b) (x,y)连成的线段而言(其中a>x,b>y)&#xff0c; 在…

石子合并[DP-N3]

题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆&#xff0c;并将新的一堆的石子数&#xff0c;记为该次合并的得分。 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入输出格式 输入格式&…

智能合约智能么?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 近几年&#xff0c;随着区块链、加密货币概念的发展&#xff0c;智能合约也开始被广泛的接受&#xff0c;然而就像最初的人工智能被过度神化一样&…

Codeforces 504 A (Round #285 div.1 A) Misha and Forest

Codeforces Round #285 (Div.1) A Misha and Forest 水题水题水…… 题意&#xff1a;给你一些点&#xff0c;给出他们连通了多少个点以及这些点的下标的异或值&#xff0c;让你找出一个图 题解&#xff1a;拓扑排序一发 代码: #include <iostream> #include <cstdio&…

hashlib模式和hmac模式

hashlib模式 什么叫hash&#xff1f; 一&#xff1a;hash是一种算法&#xff08;3.x里代替了md5模块和sha模块&#xff0c;主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 &#xff0c;MD5 算法&#xff09;&#xff0c;该算法接受传入的内容&#xff0c;经过运算得到一串hash…

asp导出word中文乱码_解决文档打开乱码问题丨小工具系列

问题:手头上有个从Workbench导出的数据表文档打开发现里面的中文是乱码&#xff01;如图所示&#xff1a;解决方法利用记事本&#xff08;notepad&#xff09;将该文档的格式修改为UTF-8&#xff0c;步骤如下点击电脑的开始菜单&#xff0c;点击"所有程序"&#xff0…

一篇文章让你了解智能合约以及和区块链的关系

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 智能合约是区块链最重要的特性&#xff0c;也是区块链能够被称为颠覆性技术的主要原因&#xff0c;更是各国央行考虑使用区块链技术来发行数字货币的…

我的常用npm命令

npm link gulp node-sass gulp-sass gulp-autoprefixer gulp-sourcemaps gulp-font-spider gulp-concat gulp-uglify gulp-jshint map-stream 转载于:https://www.cnblogs.com/siluo2000/p/8779988.html

pytorch 测试每一类_DeepFM全方面解析(附pytorch源码)

写在前面最近看了DeepFM这个模型。把我学习的思路和总结放上来给大家和未来的自己做个参考和借鉴。文章主要希望能串起学习DeepFM的各个环节&#xff0c;梳理整个学习思路。以“我”的角度浅谈一下DeepFM基础知识看过的一些有用文献最后附上可实现的pytorch代码&#xff0c;用具…

超简单的网页选项卡---jQuery

<!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>网页选项卡</title> <script src"jquery-1.4.2.js"></script> <script type"text/javascript"> $(funct…

一篇文章让你了解区块链技术的发展阶段

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 区块链是由一系列技术实现的全新去中心化经济组织模式&#xff0c;2009年诞生于比特币系统的构建&#xff0c;2017年成为全球经济热点&#xff0c;但…

301 Remove Invalid Parentheses 删除无效的括号

删除最小数目的无效括号&#xff0c;使输入的字符串有效&#xff0c;返回所有可能的结果。注意: 输入可能包含了除 ( 和 ) 以外的元素。示例 :"()())()" -> ["()()()", "(())()"]"(a)())()" -> ["(a)()()", "(a(…

python3 列表转字节_Python 3.9!10大新特性值得关注

选自towardsdatascience作者&#xff1a;Farhad Malik机器之心编译编辑&#xff1a;陈萍近日&#xff0c;Python 3.9 发布&#xff0c;并开发了一些新特性&#xff0c;包括字典合并与更新、新的解析器、新的字符串函数等。Python 3.9 已于 10 月 5 日发布&#xff0c;新版本的特…