Pagini recente » Cod sursa (job #2583701) | Cod sursa (job #3149722) | Cod sursa (job #3265062) | Cod sursa (job #2312031) | Cod sursa (job #575561)
Cod sursa(job #575561)
#include<stdio.h>
long p[1000051];
long f[1000051][11];
void phi (long n)
{
long i,j;
for (i=1;i<=n;i++)
p[i]=i;
for (i=2;i<=n;i++)
if (p[i]==i)
{
p[i]=i-1;
for (j=i+i;j<=n;j=j+i)
p[i]=p[i]*(i-1)/i;
}
}
void prim (long n)
{
long i,j;
f[1][0]=1;
f[1][1]=1;
for (i=2;i<=n;i++)
if (f[i][0]==0)
{
f[i][0]=1;
f[i][1]=i;
for (j=i+i;j<=n;j=j+i)
f[j][++f[j][0]]=i;
}
}
long mins (long x , long y)
{
long i,j,ok=1;
for (i=1,j=1;i<=f[x][0] && j<=f[y][0] && ok;i++,j++)
if (f[x][i]==f[y][i])
ok=0;
return ok;
}
int main()
{
long c,d,minc=-1,mind=-1,num=0,max,i,j;
freopen("mins.in","r",stdin);
freopen("mins.out","w",stdout);
scanf("%ld%ld",&c,&d);
if (c<d)
minc=mind=c;
else
minc=mind=d;
if (c>d)
max=c;
else
max=d;
phi(minc);
num=p[1]+p[minc];
for (i=2;i<minc;i++)
num=num+p[i]*2;
prim(max);
for (i=minc+1;i<c;i++)
for (j=1;j<d;j++)
{
if (mins(i,j)==1)
num++;
}
printf("%ld\n",num);
return 0;
}