编程实现计算欧拉函数值的算法 
时间: 2023-05-17 21:07:28 浏览: 26
欧拉函数可以用以下算法计算:
1. 将 n 分解质因数,得到 n = p1^k1 * p2^k2 * ... * pm^km。
2. 对于每个质因子 pi,欧拉函数的值为 pi^(ki-1) * (pi - 1)。
3. 将每个质因子的欧拉函数值相乘,得到最终的欧拉函数值。
以下是用 Python 实现的代码:
def euler(n):
result = n
i = 2
while i * i <= n:
if n % i == 0:
result = result // i * (i - 1)
while n % i == 0:
n //= i
i += 1
if n > 1:
result = result // n * (n - 1)
return result
print(euler(10)) # 输出 4
相关问题
编程实现计算欧拉函数值的算法C语言
#include <stdio.h>
int phi(int n) {
int result = n; // 初始化结果为 n
int i;
for (i = 2; i * i <= n; i++) {
if (n % i == 0) {
// i 是 n 的一个质因数
while (n % i == 0) {
// 除去所有 i 的因数
n /= i;
}
// 除去所有 i 的因数后,result 中要少了 i 的因数
result -= result / i;
}
}
if (n > 1) {
// n 是一个大于 sqrt(n) 的质数
result -= result / n;
}
return result;
}
int main() {
int n;
printf("请输入一个正整数 n:");
scanf("%d", &n);
printf("欧拉函数值为:%d\n", phi(n));
return 0;
}
用C语言编程实现计算欧拉函数值的算法
#include <stdio.h>
int euler(int n) {
int result = n;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
result = result / i * (i - 1);
while (n % i == 0) {
n /= i;
}
}
}
if (n > 1) {
result = result / n * (n - 1);
}
return result;
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
printf("欧拉函数值为:%d\n", euler(n));
return 0;
}
相关推荐



