当前位置: 首页 > news >正文

欧拉函数 + 线性求法

欧拉函数:

在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)。此函数以其首名研究者欧拉命名(Euler'so totient function),它又称为Euler's totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。

求法:

①基本公式:φ(n)=n×Π(p|n且p为质数)(1-1/p)

证明: 对于因子p,n以内所有p的倍数的数有n/p个。

利用容斥,有因子p1,p2时,n以内互质的数的个数是:n-n/p1-n/p2+n/(p1×p2)=n(1-1/p1-1/p2+1/(p1×p2)=n(1-1/p1)(1-1/p2)

以此类推可以推出公式。 利用质因数分解可以n^1/2求出来

②性质:

1.若a为质数,φ[a]=a-1;

证明显然

2.若a为质数,a mod b=0,φ[a×b]=φ[b]×a

证明: 因为所有a的因子都是b的因子,所以在φ[b]基础上乘a即可。(考虑公式)

3.若a,b互质,φ[a×b]=φ[a]×φ[b] (当a为质数时,if b mod !=0 ,φ[a×b]=φ[a]×φ[b])

证明:a的质因子和b的质因子没有相同的,而ab的质因子必然在a、b中出现过,所以直接相乘就可以,(考虑公式)

线性求euler

int m[n],phi[n],p[n],nump;
//m[i]标记i是否为素数,0为素数,1不为素数;p是存放素数的数组;nump是当前素数个数;phi[i]为欧拉函数
int make()
{
        phi[1]=1;
    for (int i=2;i<=n;i++)
    {
        if (!m[i])//i为素数
        {
            p[++nump]=i;//将i加入素数数组p中
            phi[i]=i-1;//因为i是素数,由特性得知    
        }    
        for (int j=1;j<=nump&&p[j]*i<n;j++)  //用当前已的到的素数数组p筛,筛去p[j]*i
        {
            m[p[j]*i]=1;//可以确定i*p[j]不是素数 
            if (i%p[j]==0) //看p[j]是否是i的约数,因为素数p[j],等于判断i和p[j]是否互质 
            {
                phi[p[j]*i]=phi[i]*p[j]; //性质2
                break;
            }
            else phi[p[j]*i]=phi[i]*(p[j]-1); //互质,性质3,其中p[j]-1就是phi[p[j]]   
        }
    }
}

 

转载于:https://www.cnblogs.com/Miracevin/p/9031706.html

相关文章:

  • 编写高质量JavaScript代码之并发
  • Python成长之路【第三篇】函数
  • Callable和Future用法示例
  • 谁说我们IT不重要???
  • linux-NAT连接外网
  • DataWorks支持PyODPS类型任务
  • JS 时间函数 / 格式化时间戳
  • THML DOM / Element 对象操作
  • [Excel VBA]单元格区域引用方式的小结
  • 量子计算机还没完全实现,硅谷已流行开量子计算聚会
  • 1.安装zabbix
  • K最近邻算法(KNN)
  • ssh scp远程免密
  • 量子力学科普
  • Openssh远程访问及控制
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • go语言学习初探(一)
  • idea + plantuml 画流程图
  • jdbc就是这么简单
  • Linux后台研发超实用命令总结
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Spring框架之我见(三)——IOC、AOP
  • unity如何实现一个固定宽度的orthagraphic相机
  • vue 配置sass、scss全局变量
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 聊聊flink的TableFactory
  • 面试遇到的一些题
  • 网络应用优化——时延与带宽
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 原生js练习题---第五课
  • postgresql行列转换函数
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​决定德拉瓦州地区版图的关键历史事件
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #图像处理
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (Note)C++中的继承方式
  • (四)鸿鹄云架构一服务注册中心
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转载)Linux 多线程条件变量同步
  • .bat文件调用java类的main方法
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET CLR基本术语
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net解析传过来的xml_DOM4J解析XML文件
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [.net] 如何在mail的加入正文显示图片
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [bbk5179]第66集 第7章 - 数据库的维护 03