【模板】欧拉函数

#include <iostream>

using namespace std;

int n;
int ans;

int main()
{
	cin >> n;
	int last = ans = n;
	for(int i = 2; i * i <= n; i++)
	{
		if(last % i == 0)
		{
			while(last % i == 0) last /= i;
			ans /= i;
			ans *= (i - 1);
			// ans *= (i - 1) / i
			// ans *= 1 - 1 / i
		}
	}
	if(last > 1) // 还有一个质数因子
	{
		ans /= last;
		ans *= (last - 1);
	}
	cout << ans;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/kcn999/article/details/83045823
今日推荐