Pagini recente » Cod sursa (job #1118705) | Cod sursa (job #3267464) | Cod sursa (job #1590197) | Cod sursa (job #253560) | Cod sursa (job #373507)
Cod sursa(job #373507)
#include <cstdio>
#include <cstring>
#define file_in "mins.in"
#define file_out "mins.out"
int a,b,min,max,res;
int prim[1001100],t[1101010][10],nrp[1001010];
inline int count2(int x, int y)
{
int i;
for (i=1;i<=nrp[y];++i)
if (x%t[y][i]==0) return 0;
return 1;
}
int count(int x)
{
int nr,i;
nr=x;
for (i=1;i<=nrp[x];++i)
nr=(nr/t[x][i])*(t[x][i]-1);
return nr;
}
inline int maxim(int a, int b) { return a>b?a:b; }
inline int minim(int a, int b) { return a<b?a:b; }
int main()
{
int i,j;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d", &a, &b);
a--;b--;
min=minim(a,b);
max=maxim(a,b);
memset(prim,0,sizeof(prim));
nrp[1]=1;
t[1][1]=1;
for (i=2;i<=min;++i)
if (!prim[i])
{
for (j=i;j<=min;j+=i)
{
prim[j]=1;
t[j][++nrp[j]]=i;
}
}
for (i=2;i<=min;++i)
res+=count(i);
res*=2;
res+=(max-min);
for (i=min+1;i<=max;++i)
for (j=2;j<=min;++j)
if (count2(i,j)==1)
res++;
printf("%d", res+1);
fclose(stdin);
fclose(stdout);
return 0;
}