Pagini recente » Cod sursa (job #674533) | Cod sursa (job #268602) | Cod sursa (job #1110294) | Cod sursa (job #299041) | Cod sursa (job #373504)
Cod sursa(job #373504)
#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 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 y)
{
int nr,i;
if (nrp[x]<nrp[y])
{
for (i=1;i<=nrp[x];++i)
if (y%t[x][i]==0) return 0;
}
else
for (i=1;i<=nrp[y];++i)
if (x%t[y][i]==0) return 0;
return 1;
}
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)
for (j=1;j<i;++j)
if (j==1) res++;
else
if (count(i,j)==1) res++;
res*=2;
for (i=min+1;i<=max;++i)
for (j=1;j<=min;++j)
if (j==1) res++;
else
if (count2(i,j)==1)
res++;
printf("%d", res+1);
fclose(stdin);
fclose(stdout);
return 0;
}