编程实现计算欧拉函数值的算法
时间: 2023-05-30 17:02:45 浏览: 73
欧拉函数(Euler's Totient Function)是指小于等于n的正整数中与n互质的数的个数。以下是一个实现计算欧拉函数值的Python算法:
```python
def euler_phi(n):
result = n
i = 2
while i * i <= n:
if n % i == 0:
result -= result // i
while n % i == 0:
n //= i
i += 1
if n > 1:
result -= result // n
return result
```
该算法的时间复杂度为O(sqrt(n)),因为它只需要枚举n的因子,而小于等于n的因子个数最多有sqrt(n)个。
相关问题
编程实现计算欧拉函数值的算法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;
}
阅读全文