• 求单个欧拉函数值


直接套用欧拉函数的普通表达式(唯一质因子分解)

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.第一种方法要用到欧拉函数的两个性质:(这种方法我尽量理解去记(;´༎ຶД༎ຶ`),时间复杂度比第二种小)

  1. n%a==0 && (n/a)%a==0 则    ,a是质数
  2. 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.第二种方法要用到欧拉函数的积性

  1. 如果m和n互质,则
  2. 如果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])   }    }
}

【模版】求单个/多个欧拉函数值相关推荐

  1. 线性筛法求质数分解、欧拉函数

    普通筛法的缺点是:对于n,它的质因子有p1,p2,p3,那么n会被划掉3次. 线性筛法的核心思想是:对于n,它只被它的最小质因子p1划掉1次. 线性筛法略加变形即可用来求质数分解和欧拉函数. 求质数分 ...

  2. 欧拉线性筛法求素数(顺便实现欧拉函数的求值)

    标签:欧拉筛法   素数   欧拉函数   phi 我们先来看一下最经典的埃拉特斯特尼筛法.时间复杂度为O(n loglog n) int ans[MAXN]; void Prime(int n) { ...

  3. HDU-5868-Different Circle Permutation(快速幂求fib,单数欧拉函数(1e9规模),oeis)...

    转载于:https://www.cnblogs.com/GrowingJlx/p/6642765.html

  4. AcWing 874. 筛法求欧拉函数

    线性筛法求解欧拉函数 有关线性筛法的介绍,可以参考这道题:868. 筛质数 - AcWing题库 这道题y总采用了线性筛选法来筛选掉指定范围内的合数,筛选出质数.思维利用得极为巧妙. 结合y总讲解视频 ...

  5. 欧拉函数和莫比乌斯反演(Mobius)

    这几天研究了之前一直困扰自己很久的莫比乌斯反演,虽然自己现在学的还不是很好,就简简单单的写一下总结吧,咦,都没学会掌握我就写总结好像很欠揍,欧拉函数现在也系统的整理一下好了 一.欧拉函数 1.定义:* ...

  6. 数论讨伐!欧拉函数!

    [欧拉函数] 任务开始. 什么是欧拉函数?我们又怎么求呢??? 此次任务的主要怪物:欧拉函数 (1)欧拉函数定义 欧拉函数嘛,当然是我们著名的莱昂哈德·欧拉发明的啦~那么他是怎么定义介个函数滴? 咳咳 ...

  7. 欧拉余数定理通解,求A的B次幂模C的值( A^B mod C)

    #欧拉余数定理算法 对于 A^B mod C (网上的算法基本上不见考虑 A ,C 不互质的情况,显然是残缺的) 1.如果 A ,C 不互质(互质:两个数做因式分解,公共因子只有1) 通过约分使得新的 ...

  8. UVA10820欧拉函数求互质的对数

    题意: 给出n,算出小于等于n的所有数中,有几对互质: 思路: 利用欧拉函数求与x互质的数的个数prime[x],再将prime[x]递推累加prime[x]=prime[x]+prime[x-1], ...

  9. 隐式欧拉解常微分方程c语言,利用欧拉方法求常微分方程近似数值解.doc

    利用欧拉方法求常微分方程近似数值解,欧拉微分方程,欧拉运动微分方程,欧拉平衡微分方程,欧拉型微分方程,微分方程的欧拉算法,微分方程的欧拉解法,欧拉型常微分方程,偏微分方程数值解,微分方程数值解法 利用 ...

  10. AcWing 874. 筛法求欧拉函数(欧拉函数)

    题目链接 https://www.acwing.com/problem/content/876/ 思路 对于一个数x如果是质数,那么它的欧拉函数就为x−1x-1x−1,对于其他合数我们可以将其拆成最小 ...

最新文章

  1. 同样在JavaScript中
  2. 新加坡南洋理工 计算机排名6,别踩坑了!这些才是新加坡最好的专业!
  3. wxWidgets:wxScrollEvent类用法
  4. Atitit  五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I
  5. 将桌面文件复制到/etc目录
  6. java 16进制数组 字符串_byte数组转换成16进制字符串和字符数组的方法
  7. ant design form表单的时间处理
  8. 继承redis spring_Spring 极速集成注解 Redis 实践
  9. mysql查询操作的5种子句
  10. 机器学习算法中的偏差-方差权衡(Bias-Variance Tradeoff)
  11. Bailian2804 词典【map+字典树】
  12. PowerDesigner导出SQL脚本运行注释出现乱码问题
  13. 复变函数(第五版)课后答案 余家荣 版 课后习题答案 高等教育出版社 第一章 课后题答案与解析
  14. 设置win10保护色
  15. 翻译狗文档免费下载手册(补充版)
  16. Android 百度地图SDK 自动定位、标记定位
  17. 10-门面模式Quarkus实现
  18. 基于javaweb的在线点餐+外卖配送系统
  19. 报表工具的 SQL 植入sql注入风险及规避方法
  20. AVS2实时编码器xavs2的运行

热门文章

  1. System level Programming study(1)
  2. html怎么快速收录,如何让网站快速收录?网站提高收录的10种方法
  3. 五子棋算杀c语言,什么是五子棋的做杀
  4. css控制td比内容宽5px_CSS从零开始——布局
  5. 通过数据,从键盘录入学生考试科目数,然后依次录入学的每一科分数.使用数组存储学生分数.然后输出总分,平均分,简单易理解
  6. Android 百度地图搜索框实现,仿百度地图街景实现
  7. java 中如何临时保存某输入值_java笔记临时存放
  8. java ssh 启动时间_java ssh项目启动异常说明
  9. “ObjectContent`1”类型未能序列化内容类型“application/xml; charset=utf-8”的响应正文。
  10. topcoder srm 704 div1