欧拉函数 \(\varphi(n)\) 定义为小于 \(n\) 与 \(n\) 互质的数字,炒个例子,\(\varphi(10) = 4\),因为 \(1,3,7,9\) 与 \(10\) 互质。

怎么求?\(n\) 唯一分解成 \(p_1^{c_1}p_2^{c_2}\dots p_k^{c_k}\),则 \(\varphi(n) = n\prod\limits_{i = 1}^k \dfrac{p_i - 1}{p_i}\),证明可以用容斥做(懒得写了┓( ´∀` )┏)

它显然可以用分解质因数求单个的,也可以用埃筛求多个的,长这样

void getphi() {
for(int p = 1; p <= MAXN; p++) phi[p] = p;
for(int p = 2; p <= MAXN; p++)
if(phi[p] == p)
for(int i = p; i <= MAXN; i += p)
phi[i] = phi[i] / p * (p - 1);
}

原因显而易见。

最重要的是几条性质(也就是说我水了一半是吧 QAQ)

  1. 与 \(n\) 互质的数之和为 \(\dfrac{\varphi(n)n}{2}\)。

    这是因为 \(\gcd(n - x, n) = \gcd(n, x)\),则如果 \(x\) 与 \(n\) 互质,那么 \(n - x\) 亦与 \(n\) 互质,成对出现,和为 \(n\),有 \(\dfrac{\varphi(n)}{2}\),总和为 \(\dfrac{\varphi(n)n}{2}\)。

  2. 欧拉函数是积性函数,即 \(\varphi(ab) = \varphi(a)\varphi(b),\gcd(a, b) = 1\)

    显而易见,分解质因数即可证明。

  3. 若 \(p\) 为质数,且 \(p|n, p^2|n\),则有 \(\varphi(n) = \varphi(n/p) \times p\)。

    由于 \(p|n, p^2|n\),因此 \(n/p\) 与 \(n\) 有同样的质因子,\(\varphi(n)\) 与 \(\varphi(n/p)\) 用公式写一下显然成立(

  4. 若 \(p\) 为质数,且 \(p|n, p^2\not | n\),则有 \(\varphi(n) = \varphi(n/p) \times (p - 1)\)。

    由于 \(p|n, p^2\not|n\),则 \(n/p\) 没有质因子 \(p\),即 \(\gcd(n/p, p) = 1\),由于这是积性函数则 \(\varphi(n) = \varphi(n / p)\times \varphi(p) = \varphi(n/ p) \times (p - 1)\)。

运用 3 4 可以用欧拉筛筛这个 qwq

  1. \(\sum\limits_{d|n}\varphi(d) = n\)

欧拉。。欧拉反演。。。?

不会证明,懒得去学,跑路,有时间填坑 qAq


欧拉筛怎么筛这个(欧拉超级加倍 2333333)

欧拉筛的核心在于将一个合数拆成 \(p\times k\),其中 \(p\) 是这个数字的最小质因数。如果 \(p\) 与 \(k\) 互质,则有 \(\varphi(pk) = \varphi(p)\times (k - 1)\),否则 \(varphi(pk) = \varphi(p/k)\times p\)。原因是因为上面的 3 4 两条性质 QWQ

代码不放了,都讲到这个份上了就都会了~(主要是暂时找不到懒得写了┓( ´∀` )┏(懒狗。。。))


式子的话,一般是求和,然后我们每次是枚举 \(\gcd\),最后一波乱搞搞成欧拉函数的形式 qwq

因题而异,不写了 qwq

欧拉函数和遗忘自动机 SX 的故逝的更多相关文章

  1. 【bzoj2401】陶陶的难题I “高精度”+欧拉函数+线性筛

    题目描述 求 输入 第一行包含一个正整数T,表示有T组测试数据.接下来T<=10^5行,每行给出一个正整数N,N<=10^6. 输出 包含T行,依次给出对应的答案. 样例输入 7 1 10 ...

  2. hdu2588 GCD (欧拉函数)

    GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数.  (文末有题) 知 ...

  3. BZOJ 2705: [SDOI2012]Longge的问题 [欧拉函数]

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2553  Solved: 1565[Submit][ ...

  4. BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 4436  Solved: 1957[Submit][Status][Discuss ...

  5. COGS2531. [HZOI 2016]函数的美 打表+欧拉函数

    题目:http://cogs.pw/cogs/problem/problem.php?pid=2533 这道题考察打表观察规律. 发现对f的定义实际是递归式的 f(n,k) = f(0,f(n-1,k ...

  6. poj2478 Farey Sequence (欧拉函数)

    Farey Sequence 题意:给定一个数n,求在[1,n]这个范围内两两互质的数的个数.(转化为给定一个数n,比n小且与n互质的数的个数) 知识点: 欧拉函数: 普通求法: int Euler( ...

  7. 51Nod-1136 欧拉函数

    51Nod: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1136 1136 欧拉函数 基准时间限制:1 秒 空间限制: ...

  8. 欧拉函数 - HDU1286

    欧拉函数的作用: 有[1,2.....n]这样一个集合,f(n)=这个集合中与n互质的元素的个数.欧拉函数描述了一些列与这个f(n)有关的一些性质,如下: 1.令p为一个素数,n = p ^ k,则 ...

  9. FZU 1759 欧拉函数 降幂公式

    Description   Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,C<=1000 ...

  10. hdu 3307 Description has only two Sentences (欧拉函数+快速幂)

    Description has only two SentencesTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...

随机推荐

  1. goioc:一个使用 Go 写的简易的 ioc 框架

    目录 goioc 介绍 快速上手 接口介绍 使用 goioc 如何使用 生命周期 实例化 获取对象 结构体字段依赖注入 Dispose 接口 反射形式使用 goioc 如何使用 接口.结构体.结构体指 ...

  2. 数电第二周总结_by_yc

    数电第二周总结_CC 重点: 模块实例化.仿真测试.数值表示.参数.表达式. 模块实例化端口连接方法: A.顺序端口连接:需严格按照模块定义时的顺序 B.明明端口连接:对端口信号顺序不做要求 Ex-1 ...

  3. 持续发烧,聊聊Dart语言的静态编译,能挑战Go不?

    前言 前两天写了几篇文章,谈了谈Dart做后端开发的优势,比如: <Dart开发服务端,我是不是发烧(骚)了?> <持续发烧,试试Dart语言的异步操作,效率提升500%> & ...

  4. MySQL数据结构(索引)

    目录 一:MySQL索引与慢查询优化 1.什么是索引? 2.索引类型分类介绍 3.不同的存储引擎支持的索引类型也不一样 二:索引的数据结构 1.二叉树(每个节点只能分两个叉) 2.数据结构(B树) 3 ...

  5. placeholder属性作用

    placeholder属性作用 1.介绍 该提示会在输入字段为空时显示,并会在字段获得焦点时消失. 注释:placeholder 属性适用于以下的 <input> 类型:text, sea ...

  6. python循环结构之for循环

    在python中,for循环是应用非常广的循环语句,遍历字典.遍历列表等等... # for语句结构 for 遍历 in 序列: 执行语句 遍历字典 lipsticks = {"Chanel ...

  7. 【机器学习】李宏毅——Domain Adaptation(领域自适应)

    在前面介绍的模型中,一般我们都会假设训练资料和测试资料符合相同的分布,这样模型才能够有较好的效果.而如果训练资料和测试资料是来自于不同的分布,这样就会让模型在测试集上的效果很差,这种问题称为Domai ...

  8. 【转载】EXCEL VBA 20个有用的ExcelVBA代码

    1.显示多个隐藏的工作表 如果你的工作簿里面有多个隐藏的工作表,你需要花很多时间一个一个的显示隐藏的工作表. 下面的代码,可以让你一次显示所有的工作表 Sub UnhideAllWoksheets() ...

  9. 01-Sed简介

    1 Sed简介 Sed(Stream EDitor)为Uninx系统上提供将编辑工作自动化的编辑器,使用者无需直接编辑数据.使用者可以利用Sed所提供的20多种不同的函数,进行不同的编辑动作. Sed ...

  10. MySQL 嵌套子查询 with子句 from子查询 in子查询 join组合

    一.适用场景和方法 (1)适用场景 考虑查询过程中是否存在以下情况: 查询某些数据时需要分组才能得到,某些数据不需要分组就能得到或者分组条件不同: 查询某些数据时需要where条件,某些列不需要whe ...