Pagini recente » Cod sursa (job #64049) | Cod sursa (job #2263027) | Cod sursa (job #13236) | Cod sursa (job #445181) | Cod sursa (job #3249960)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
int n,nr;
int indmob(int x)
{
int d=2;
int exp=0;
int divprim=0;
while (x%d==0)
{
x/=d;
exp++;
}
if (exp>1)
return 0;
if (exp>0)
divprim++;
d=3;
while (x>0)
{
exp=0;
while (x%d==0)
{
x/=d;
exp++;
}
if (exp>1)
return 0;
if (exp>0)
divprim++;
if (d*d<=x)
d+=2;
else
d=x;
}
if (divprim%2==0)
return 1;
return -1;
}
int main()
{
fin >> n;
for (int i=2; i*i<=n; i++)
{
if (n%i==0)
nr+=(n/i+indmob(i));
}
fout << nr;
return 0;
}