Pagini recente » Cod sursa (job #3271490) | Cod sursa (job #883334) | Cod sursa (job #734129) | Cod sursa (job #1504143) | Cod sursa (job #3292466)
#include <fstream>
#include <vector>
#define eb emplace_back
using namespace std;
ifstream cin("frac.in");
ofstream cout("frac.out");
int n,p,N[120005],q,m;
bool E[120005];
int divizori[505],mob[505];
signed main()
{
n=120000;
for(int i=2;i<=n;i++)
E[i]=1;
for(int i=2;1LL*i*i<=n;i++)
if(E[i])
for(int j=i;1LL*j*i<=n;j++)
E[i*j]=0;
for(int i=2;i<=n;i++)
if(E[i])
N[++q]=i;
q--;
cin>>n>>p;
for(int d=1;d*d<=n;d++)
if(n%d==0)
{
if(d!=1)
divizori[++m]=d;
if(d!=n/d)
divizori[++m]=n/d;
}
for(int i=1;i<=m;i++)
{
int x=divizori[i];
int d=1,sgn=0,ok=0;
while(x>1 && d<=q)
{
if(N[d]*N[d]>x)
{
break;
}
if(ok==1)
{
break;
}
if(x%N[d]==0)
{
int e=0;
while(x%N[d]==0) e++,x=x/N[d];
if(e>1)
{
ok=1;
break;
}
sgn++;
}
d++;
}
if(ok==1)
{
continue;
}
if(x!=1)
sgn++;
sgn=sgn%2;
if(sgn==0) mob[i]=1;
else mob[i]=-1;
}
return 0;
}