1. 程式人生 > >【模板】尤拉函式

【模板】尤拉函式

#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;
}