Pagini recente » Cod sursa (job #1011953) | Cod sursa (job #107667) | Cod sursa (job #1646272) | Cod sursa (job #1948374) | Cod sursa (job #373502)
Cod sursa(job #373502)
#include <cstdio>
#include <cstring>
#define file_in "mins.in"
#define file_out "mins.out"
int a,b,min,max,res;
int prim[10010],t[11010][20],nrp[10010];
inline int cmmdc(int a, int b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
int count(int x)
{
int nr,i;
nr=x;
for (i=1;i<=nrp[x];++i)
{
if (nr%t[x][i]==0) nr=(nr/t[x][i])*(t[x][i]-1);
else nr=(nr/t[x][i]+1)*(t[x][i]-1);
}
return nr;
}
int main()
{
int i,j;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d", &a, &b);
a--;b--;
if (a>b)
{
max=a;
min=b;
}
else
{
min=a;
max=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*2;j<=min;j+=i)
prim[j]=1;
t[j][++nrp[j]]=i;
}
for (i=2;i<=min;++i)
for (j=1;j<i;++j)
if (j==1) res++;
else
/*res+=count(i);*/
if (cmmdc(i,j)==1) res++;
res*=2;
//res+=(max-min);
for (i=min+1;i<=max;++i)
for (j=1;j<=min;++j)
if (j==1) res++;
else
if (cmmdc(i,j)==1)
res++;
printf("%d", res+1);
fclose(stdin);
fclose(stdout);
return 0;
}