求一个数的欧拉函数值

在数论,对正整数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;
		
	}
}

 

全部评论

相关推荐

头像 会员标识
昨天 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
11-08 16:53
门头沟学院 C++
投票
滑模小马达:第三个如果是qfqc感觉还行,我签的qfkj搞电机的,违约金也很高,但公司感觉还可以,听说之前开过一个试用转正的应届生,仅供参考。
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务