c语言欧拉函数,欧拉函数
欧拉函数
我们用$\phi(n)$表示欧拉函数
定义:$\phi(n)$表示对于整数$n$,小于等于$n$中与$n$互质的数的个数
性质
1.$\phi(n)$为积性函数
2.$\sum_{d|n}\phi(d)=n$
3.$1$到$n$中与$n$互质的数的和为$n*\dfrac{\phi(n)}{2}(n>1)$
计算方法
$\sqrt(n)$计算单值欧拉函数
假设我们需要计算$\phi(n)$
分情况讨论
1.当$n=1$时
很明显,答案为$1$
2.当$n$为质数时
根据素数的定义,答案为$n-1$
(仅有$n$与$n$不互质)
3.当$n$为合数时
我们已经知道了$n$为素数的情况
不妨对$n$进行质因数分解
设$n=a_1^{p_1}*a_2^{p_2}...*a_k^{p_k}$
假设$k=1$
那么$\phi(p^k)=p^k-p^{k-1}$
证明:
考虑容斥,与一个数互素的数的个数就是这个数减去与它不互素的数的个数
因为$p$是素数,所以在$p^k$中与其不互素的数为$1*p$,$2*p$....$p^{k-1}*p$,有$p^{k-1}$个
得证
当$k\neq 1$时
$$\phi(n)$$
$$=\varphi \left( a^{p_{1}}_{1}a^{p_{2}\ldots }_{2}a^{Pk}_{k}\right)$$
$$=\prod ^{k}_{i=1}a^{P_i}-a^{P_{i}-1}_{i}$$
$$=\prod ^{k}_{i=1}a^{Pi}_{i}(1-\dfrac {1}{p_{i}})$$
$$=n*\prod ^{k}_{i=1}(1-\dfrac {1}{p_{i}})$$
#include#include#include#include
#define LL long long
using namespacestd;intmain()
{
LL N;while(cin>>N&&N!=0)
{int limit=sqrt(N),ans=N;for(int i = 2; i <= limit ; ++i)
{if(N%i==0) ans=ans/i*(i-1);while(N%i==0) N=N/i;
}if(N>1) ans=ans/N*(N-1);
printf("%d\n",ans);
}return 0;
}
线性筛
因为欧拉函数是积性函数
因此可以使用线性筛法
性质1
若$p$为素数,则$\varphi \left( p\right) =p-1$
证明:
在$1-p$中,只有$(p,p)\neq1$
性质2
若$i mod p \neq 0$,且$p$为素数
则$\varphi \left( i*p\right) =\varphi \left( i\right) *\varphi \left( p\right)$
$=\varphi \left( i\ast p\right) =\varphi \left( i\right) \ast \left( p-1\right)$
这一步同时利用了性质1和欧拉函数的积性
性质3
若$i mod p = 0$,且$p$为素数,
则$\varphi \left( i\ast p\right) =\varphi \left( i\right) \ast p$
证明:
没怎么看懂,丢一个链接
http://blog.csdn.net/Lytning/article/details/24432651
#include#include#include#include
#define LL long long
using namespacestd;const int MAXN=1e6+10;int prime[MAXN],tot=0,vis[MAXN],phi[MAXN],N=10000;voidGetPhi()
{for(int i=2;i<=N;i++)
{if(!vis[i])
{
prime[++tot]=i;
phi[i]=i-1;
}for(int j=1;j<=tot&&prime[j]*i<=N;j++)
{
vis[ i*prime[j] ] = 1;if(i%prime[j]==0)
{
phi[ i*prime[j] ]=phi[i]*prime[j];break;
}else phi[ i*prime[j] ]=phi[i]*(prime[j]-1);
}
}
}intmain()
{
GetPhi();
cin>>N;
printf("%d\n",phi[N]);return 0;
}
例题
放两道水题
c语言欧拉函数,欧拉函数相关推荐
- 筛表合集(素数筛 欧拉函数筛 莫比乌斯函数筛)
[目录] 一.素数筛 1.素数判断 2.素数普通筛 3.素数线性筛 4.素数区间筛 二.欧拉函数筛 三.莫比乌斯函数筛 [素数筛] 1.直接判定质数 bool judgePrime( int num ...
- 欧拉函数和莫比乌斯函数
多校赛上最近有道题目是gugufishtion Problem Description Today XianYu is too busy with his homework, but the bori ...
- 线性筛与欧拉函数、莫比乌斯函数
网上关于素数筛的资料很多,这里只是给出弱鸟整理的几个线性筛和应用. 最朴素的素数筛--埃拉托斯特尼筛法(Sieve of Eratosthenes) 复杂度 Olognlogn int primes[ ...
- 欧拉、欧几里得、笛卡尔都没能解决的数学问题,他探索了新的方案
萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 欧拉.欧几里得.笛卡尔.尼科马修斯都没能解决的千年数学问题,还有破解的可能吗? 还真有可能. 最近,一位名为佩斯·尼尔森 (Pace Nie ...
- 小福利,带你快速入门sumifs多条件求和函数、设置下拉菜单结合vlookup函数双条件查找数据、excel的切片器(表关联)、数据透视表、数据透视图
第一部分:利用sumifs函数求得双条件下的求和值 如题,现在需要根据下拉菜单年份和商品来查找利润, 第一步,在年份H3设置数据验证,分别是2019,2020,2021 第二步,在商品H4设置数据验证 ...
- Java EXCEL 表格导入导出(带下拉选-带VLOOKUP函数封装)
Java EXCEL 表格导入导出(带下拉选-带VLOOKUP函数封装) 对于excel Java POI 使用 目前简单导出导入功能网上很多,但是对于有下拉选,样式等缺点却是最大硬伤,故此封装一个通 ...
- 常用函数的拉氏变换表
常用函数的拉氏变换表 拉氏变换 L[f(t)]=F(s)=∫0∞f(t)e−stdt;(s+σ+jω为复变量){L}[f(t)]=F(s)=\int_0^{\infty}f(t)e^{-st}dt ; ...
- 求下列函数的拉普拉斯变换_试求下列函数的拉氏变换.pdf
试求下列函数的拉氏变换 习 题 2-1 试求下列函数的拉氏变换 (1) 2 (f )t t 3 t+2 + 2 3 2 解:F s =+ + ( ) 3 2 s s s (2 ) f t ( ) 5 ...
- c语言函数游戏,C语言做游戏常用到一些函数大全 2011.doc
蕾讳键哼蚂屋号煞同臭眼垣渊含短徽讽介毋蛾胀凉穗幸蒲蚂谁筷瞬懈汰摸某绿斌茫纸致忿拉烘七拔鹰勒匙怎搽炙拖铰冕鄙衙筏趣梧作骑芝计蓖婿揣拱夸曾霄后韶恃夷证卸冤腑免而肌蝇艰耽属搭舀题概快培盆臭懂崭苟误雀淄霍狂抬 ...
- C语言中tan函数的参数,C++_C语言中正切的相关函数总结,C语言tan()函数:正切函数
头 - phpStudy...
C语言中正切的相关函数总结 C语言tan()函数:正切函数头文件: #include tan() 函数用来求给定值的正切值,其原型为: double tan(double x); [参数]x 为给定的 ...
最新文章
- C# OracleParameter 传参 实例
- 收银机多少钱一台推荐科脉系统_防火门监控系统安装预算多少钱?防火门监控系统安装预算表[今日推荐]...
- 张尧学:祝YOCSEF越办越好
- 政府采购就是支持民族软件吗?
- python数据清洗代码_8段用于数据清洗Python代码(小结)
- python爬取一张图片并保存_python爬取百度图片并保存到本地
- Go语言实战 - 网站性能优化第一弹“七牛云存储”
- 指针错位导致对FSD误判
- Google Play 应用迁移
- 微信开放平台第三方解密失败
- 找出java重复字符串,java 找出字符串出现重复的字符和次数
- 类和对象6:相关内置函数
- 第六章 姜小白当机立断逃莒国 姜诸儿瓜期不代终遇鬼
- vimdiff 使用笔记
- 相机标定与3D重建(0)标定板说明
- 树莓派html5播放器,QT+树莓派实现一个简单的播放器
- mysql 海明距离,golang 实现海明距离 demo
- 大数据周周看:百分点集团全资并购极速洞察,精准医疗创企“海普洛斯”获2.1亿元融资
- 计算机突破图灵测试,人工智能巨大突破 计算机首次通过图灵测试
- 棒棒糖球球机器人_球球大作战刷棒棒糖
热门文章
- 二十四、ajax请求
- 哈尔滨工业大学 2023年春人工智能数学基础期末真题
- 「万字综述」对抗鲁棒性-AI桥头堡「AI核心算法」
- iOS用CallKit实现来电识别、来电拦截
- vue+TS + xlsx +ant-design-vue 解析excel文件数据
- 等保测评基本要求安全物理环境知识学习
- 运行于Windows中的GIZA++( GIZA++ working inWindows Platform)
- 新手必须学会的Eclipse快捷键,大大提高编码效率!!!
- 怎么把html转为ini,ini文件读写
- 程序人生:老板要求“996工作制” 你该怎么办?