给定 nn 个正整数 aiai,请你求出每个数的欧拉函数。
欧拉函数的定义
1∼N1∼N 中与 NN 互质的数的个数被称为欧拉函数,记为 ϕ(N)ϕ(N)。
若在算数基本定理中,N=pa11pa22…pammN=p1a1p2a2…pmam,则:
ϕ(N)ϕ(N) = N×p1−1p1×p2−1p2×…×pm−1pmN×p1−1p1×p2−1p2×…×pm−1pm
输入格式
第一行包含整数 nn。
接下来 nn 行,每行包含一个正整数 aiai。
输出格式
输出共 nn 行,每行输出一个正整数 aiai 的欧拉函数。
数据范围
1≤n≤1001≤n≤100,
1≤ai≤2×1091≤ai≤2×109
输入样例:
3
3
6
8
输出样例:
2
2
4
难度:简单 |
时/空限制:1s / 64MB |
总通过数:9518 |
总尝试数:13650 |
来源:模板题 |
算法标签 |
挑战模式
import java.sql.Array;
import java.util.*;
import java.io.*;
public class Main {
static int T;
static int N;
public static void main(String[] args) {
Scanner Sc = new Scanner(System.in);
N=Sc.nextInt();
for (int i = 0; i < N; i++) {
int num=Sc.nextInt();
System.out.println(ola(num));
}
}
public static int ola(int k){
int cnt=k;
for (int i = 2; i <=k/i ; i++) {
if (k%i==0){
cnt/=i;
cnt*=(i-1);
while (k%i==0){
k/=i;
}
}
}
if (k>1){
cnt/=k;
cnt*=(k-1);
}
return cnt;
}
}