编程实现计算欧拉函数值的算法
时间: 2023-05-30 21:01:37 浏览: 85
欧拉函数,也叫做欧拉φ函数,是指小于等于n的正整数中与n互质的数的个数。欧拉函数常用符号是φ(n)。
计算欧拉函数值的算法如下:
1. 对于正整数n,初始化φ(n)为n。
2. 对于2到n之间的每一个素数p,将φ(n)的值减去φ(n)/p。
3. 对于2到n之间的每一个素数p,如果p是n的因子,则将φ(n)的值除以p并乘以p-1。
4. 返回φ(n)的值。
代码实现如下:
```
int phi(int n) {
int result = n;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
while (n % i == 0) {
n /= i;
}
result -= result / i;
}
}
if (n > 1) {
result -= result / n;
}
return result;
}
```
该算法的时间复杂度为O(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;
}