I cannot understand what mistake is in my algo .I am getting WA.plz help someone for classical problem ETF.
#include<bits/ stdc++.h> using namespace std;
void prime(vector<int> &vec, int n)
{
if (n % 2 == 0)
{
vec.push_back(2);
n /= 2;
//cout<<2<<endl;
while (n % 2 == 0)
{
n /= 2;
}
}
for (int i = 3; i * i <= n; i = i + 2)
{
if (n % i == 0)
{
vec.push_back(i);
n /= i;
// cout<<i<<endl;
while (n % i == 0)
{
n /= i;
}
}
}
if (n > 2)
{
// cout<<n<<endl;
vec.push_back(n);
}
}
int main()
{
int t;
cin >> t;
while (t--)
{
vector<int> vec;
long long int n;
cin >> n;
prime(vec, n);
double ans = 1.0;
// cout<<"In vec"<<endl;
for (int i = 0; i < vec.size(); i++)
{
ans *= (1.0 - (1.0 / (float)vec[i]));
}
cout << (long long int)(n * ans) << endl;
;
}
}