【模版】求单个/多个欧拉函数值
求单个欧拉函数值
直接套用欧拉函数的普通表达式(唯一质因子分解)
ll euler(ll n)
{ll ans=n;for(ll i=2;i*i<=n;i++){if(n%i==0){ans=ans/i*(i-1);while(n%i==0) n/=i;}}if(n!=1) ans=ans/n*(n-1);return ans;
}
求多个欧拉函数值
如果还按照求单个函数值的方法求的话肯定会超时
i.第一种方法要用到欧拉函数的两个性质:(这种方法我尽量理解去记(;´༎ຶД༎ຶ`),时间复杂度比第二种小)
- n%a==0 && (n/a)%a==0 则 ,a是质数
- n%a==0 && (n/a)%a!=0 则 ,a是质数
ll phi[100],dive[100];//分别对应素数表和欧拉函数值
for(ll i=1;i<=n;i++)phi[i]=i;
for(ll i=2;i*i<=n;i++)
{if(phi[i]==i)for(ll j=i*i;j<=n;j+=i)phi[j]=i;
}
for(ll i=2;i<=n;i++)
{if(i%phi[i]==0 && (i/phi[i])%phi[i]==0)dive[i]=dive[i/phi[i]]*phi[i];if(i%phi[i]==0 && (i/phi[i])%phi[i]!=0)dive[i]=dive[i/phi[i]]*(phi[i]-1);
}
ii.第二种方法要用到欧拉函数的积性
- 如果m和n互质,则
- 如果n含有质因子k,则
代码来源:https://blog.csdn.net/acerandaker/article/details/80722630
void getphi()
{ int vis[M],phi[M],pri[M],tot; for(int i=2;i<=n;i++) { if(!vis[i])//先判断i是不是素数 { pri[++tot]=i; phi[i]=i-1;//当 i 是素数时小于i的所有大于零的数都和i互素 } for(int k=1;k<=tot;k++) { if(i*pri[k]>M) break; vis[i*pri[k]]=1;//按照筛素数,筛掉i的倍数 if(i%pri[k]==0)//如果有一个质数是i的因子,那么phi(i*pri[k])=phi(i)*pri[k] { phi[i*pri[k]]=phi[i]*pri[k];break; } else phi[i*pri[k]]=phi[i]*(phi[pri[k]]);//利用了欧拉函数的积性,两个数互质,那么phi(i*k)=phi(i)*phi(pri[k]) } }
}
【模版】求单个/多个欧拉函数值相关推荐
- 线性筛法求质数分解、欧拉函数
普通筛法的缺点是:对于n,它的质因子有p1,p2,p3,那么n会被划掉3次. 线性筛法的核心思想是:对于n,它只被它的最小质因子p1划掉1次. 线性筛法略加变形即可用来求质数分解和欧拉函数. 求质数分 ...
- 欧拉线性筛法求素数(顺便实现欧拉函数的求值)
标签:欧拉筛法 素数 欧拉函数 phi 我们先来看一下最经典的埃拉特斯特尼筛法.时间复杂度为O(n loglog n) int ans[MAXN]; void Prime(int n) { ...
- HDU-5868-Different Circle Permutation(快速幂求fib,单数欧拉函数(1e9规模),oeis)...
转载于:https://www.cnblogs.com/GrowingJlx/p/6642765.html
- AcWing 874. 筛法求欧拉函数
线性筛法求解欧拉函数 有关线性筛法的介绍,可以参考这道题:868. 筛质数 - AcWing题库 这道题y总采用了线性筛选法来筛选掉指定范围内的合数,筛选出质数.思维利用得极为巧妙. 结合y总讲解视频 ...
- 欧拉函数和莫比乌斯反演(Mobius)
这几天研究了之前一直困扰自己很久的莫比乌斯反演,虽然自己现在学的还不是很好,就简简单单的写一下总结吧,咦,都没学会掌握我就写总结好像很欠揍,欧拉函数现在也系统的整理一下好了 一.欧拉函数 1.定义:* ...
- 数论讨伐!欧拉函数!
[欧拉函数] 任务开始. 什么是欧拉函数?我们又怎么求呢??? 此次任务的主要怪物:欧拉函数 (1)欧拉函数定义 欧拉函数嘛,当然是我们著名的莱昂哈德·欧拉发明的啦~那么他是怎么定义介个函数滴? 咳咳 ...
- 欧拉余数定理通解,求A的B次幂模C的值( A^B mod C)
#欧拉余数定理算法 对于 A^B mod C (网上的算法基本上不见考虑 A ,C 不互质的情况,显然是残缺的) 1.如果 A ,C 不互质(互质:两个数做因式分解,公共因子只有1) 通过约分使得新的 ...
- UVA10820欧拉函数求互质的对数
题意: 给出n,算出小于等于n的所有数中,有几对互质: 思路: 利用欧拉函数求与x互质的数的个数prime[x],再将prime[x]递推累加prime[x]=prime[x]+prime[x-1], ...
- 隐式欧拉解常微分方程c语言,利用欧拉方法求常微分方程近似数值解.doc
利用欧拉方法求常微分方程近似数值解,欧拉微分方程,欧拉运动微分方程,欧拉平衡微分方程,欧拉型微分方程,微分方程的欧拉算法,微分方程的欧拉解法,欧拉型常微分方程,偏微分方程数值解,微分方程数值解法 利用 ...
- AcWing 874. 筛法求欧拉函数(欧拉函数)
题目链接 https://www.acwing.com/problem/content/876/ 思路 对于一个数x如果是质数,那么它的欧拉函数就为x−1x-1x−1,对于其他合数我们可以将其拆成最小 ...
最新文章
- 同样在JavaScript中
- 新加坡南洋理工 计算机排名6,别踩坑了!这些才是新加坡最好的专业!
- wxWidgets:wxScrollEvent类用法
- Atitit 五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I
- 将桌面文件复制到/etc目录
- java 16进制数组 字符串_byte数组转换成16进制字符串和字符数组的方法
- ant design form表单的时间处理
- 继承redis spring_Spring 极速集成注解 Redis 实践
- mysql查询操作的5种子句
- 机器学习算法中的偏差-方差权衡(Bias-Variance Tradeoff)
- Bailian2804 词典【map+字典树】
- PowerDesigner导出SQL脚本运行注释出现乱码问题
- 复变函数(第五版)课后答案 余家荣 版 课后习题答案 高等教育出版社 第一章 课后题答案与解析
- 设置win10保护色
- 翻译狗文档免费下载手册(补充版)
- Android 百度地图SDK 自动定位、标记定位
- 10-门面模式Quarkus实现
- 基于javaweb的在线点餐+外卖配送系统
- 报表工具的 SQL 植入sql注入风险及规避方法
- AVS2实时编码器xavs2的运行
热门文章
- System level Programming study(1)
- html怎么快速收录,如何让网站快速收录?网站提高收录的10种方法
- 五子棋算杀c语言,什么是五子棋的做杀
- css控制td比内容宽5px_CSS从零开始——布局
- 通过数据,从键盘录入学生考试科目数,然后依次录入学的每一科分数.使用数组存储学生分数.然后输出总分,平均分,简单易理解
- Android 百度地图搜索框实现,仿百度地图街景实现
- java 中如何临时保存某输入值_java笔记临时存放
- java ssh 启动时间_java ssh项目启动异常说明
- “ObjectContent`1”类型未能序列化内容类型“application/xml; charset=utf-8”的响应正文。
- topcoder srm 704 div1