求一个数的欧拉函数值
在数论,对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目。
例如φ(8)=4,因为1,3,5,7均和8互质。
设p1,p2,p3,...,pr为n的全部r个质因数,则有φ(n)=n*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)…..(1-1/pr)。
我们根据上述公式求欧拉函数值:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n=in.nextInt();
System.out.println(ol(n));
}
private static int ol(int n) {
// TODO Auto-generated method stub
int res=n;
for(int i=2;i*i<=n;i++)
{
if(n%i==0){
res=res/i*(i-1);
while(n%i==0)n/=i;
}
}
if(n>1)res=res/n*(n-1);
return res;
}
}