SPOJ - ETF - Euler Totient Function
Problem Link: https://www.spoj.com/problems/ETF/en/
Code:
#include <bits/stdc++.h>
using namespace std;
#define mx 1000002
int phi[mx];
int main()
{
memset(phi,0,sizeof(phi));
phi[1]=1;
for(int i=2;i<=mx;i++)
{
if(phi[i]==0)
{
phi[i]=i-1;
for(int j=i<<1;j<=mx;j+=i)
{
if(!phi[j])
{
phi[j]=j;
}
phi[j]=(phi[j]/i)*(i-1);
//cout<<phi[j]<<endl;
}
}
}
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
cout<<phi[n]<<endl;
}
return 0;
}
No comments:
Post a Comment