欧拉函数模板

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll Phi(ll n) {//返回n以下互质的数量
	ll phi = n;
	for(int i = 2 ; i*i <= n ; i++) {
		if(n%i==0) {
			phi = phi/i*(i-1);
			while(n%i==0)
				n/=i;
		}
	}
	if(n!=1)
		phi = phi/n*(n-1);
	return phi;
}
int main() {
	int tc;
	scanf("%d",&tc);
	while(tc--) {
		ll n;
		scanf("%lld",&n);
		printf("%lld\n",Phi(n));
	}
}
posted @ 2022-04-06 15:56  seekerHeron  阅读(20)  评论(0)    收藏  举报