51Nod 1136:歐拉函數


https://www.51nod.com/Challenge/Problem.html#!#problemId=1136

對正整數n,歐拉函數是少於或等於n的數中與n互質的數的數目。此函數以其首名研究者歐拉命名,它又稱為Euler's totient function、φ函數、歐拉商數等。例如:φ(8) = 4(Phi(8) = 4),因為1,3,5,7均和8互質。

輸入

輸入一個數N。(2 <= N <= 10^9)

輸出

輸出Phi(n)。

輸入樣例

8

輸出樣例

4

φ(n) = n*(1-1/p1)*(1-1/p2)*......(1-1/pn)   其中(p1.....pn)為N的素因子

 

#include<stdio.h>
int main()
{
	long long n,i,sum;
	scanf("%lld",&n);
	sum=n;
	for(i=2;i*i<=n;i++)
	{
		if(n%i==0)
		{
			sum-=sum*1/i;
			while(n%i==0)
				n/=i;
		}
	}
	if(n!=1)
		sum-=sum*1/n;
	printf("%lld\n",sum);
	return  0;
}

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com