Pagini recente » Cod sursa (job #28509) | Cod sursa (job #2307275) | Cod sursa (job #663722) | Cod sursa (job #1010628) | Cod sursa (job #631030)
Cod sursa(job #631030)
#include<stdio.h>
FILE*f=fopen("mins.in","r");
FILE*g=fopen("mins.out","w");
int min(int a,int b){
if(a<b)
return a;
return b;
}
char w[1000001];
int p[1000001],v[100000],k;
long long s,c,d;
int main() {
fscanf(f,"%lld%lld",&c,&d);
c--;
d--;
int mins=min(c,d);
for(int i=2;i<=mins;++i)
if(w[i]==0){
v[++k]=i;
p[i]++;
long long ii=i*i;
for(int j=2*i;j<=mins;j+=i){
w[j]=1;
if(j%ii)
p[j]++;
}
}
for(int i=1;i<=k;++i){
int ii=v[i]*v[i];
if(ii>mins)
break;
for(int j=ii;j<=mins;j+=ii)
p[j]=0;
}
for(int i=1;i<=k;++i)
if(p[v[i]])
if(p[v[i]]%2)
s+=(c/v[i])*(d/v[i]);
else
s-=(c/v[i])*(d/v[i]);
long long a=c*d;
fprintf(g,"%lld",a-s);
fclose(g);
fclose(f);
return 0;
}