大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
欧拉函数
1. 定义
什么是欧拉函数?
任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?(比如,在1到8之中,有多少个数与8构成互质关系?)
计算这个值的方法就叫做欧拉函数,用φ(n)
表示。在1到8之中,与8形成互质关系的是1、3、5、7,所以 φ(n)
= 4。
2. 计算
欧拉函数计算公式
这个p是什么呢?
一个正整数 n 可以通过分解质因数得到
例如n = 100
我们就可以写成 100 = 2^2 * 5^2
欧拉值 φ(n) = 100 * (1- 1/2) * (1 - 1/5)
那么知道了这个公式,我们怎么去计算呢
大致的几步
找到因子
将把(1- 1/p)
转换为(p - 1) / p
然后把相同的因子筛去
int euler(int n) {
int ans = n;
for (int i = 2; i*i <= ans; 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;
}
由于本文主要目的是讲如何计算,欧拉函数公式的推导过程可以参考维基百科:欧拉函数
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/172050.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...