import java.util.Scanner;
public class 欧拉函数 {
static int n;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
System.out.println(euler_one());
}
//求单个欧拉函数的值
static int euler_one() {
int ans = n;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
ans = ans / i * (i - 1);
}
while (n % i == 0) {
n /= i;
}
}
//表明 i * i <= n的数已经不满足了
if (n > 1) {
ans = ans / n * (n - 1);
}
return ans;
}
//求 【1,n】这个区间的欧拉函数
static int[] phi = new int[10000];
static void euler_interval() {
//初始化 所有数的欧拉值等于自身
for (int i = 1; i <= n; i++) {
phi[i] = i;
}
//进行筛选
for (int i = 2; i <= n; i++) {
if (phi[i] == i) { //将这个数的倍数 都 乘以 (1 - 1/pi)
for (int j = i; j <= n; j += i) {
phi[j] = phi[j] / i * (i - 1);
}
}
}
}
}
[java模板] 欧拉函数
最新推荐文章于 2024-04-01 00:28:49 发布