Pagini recente » tema | Cod sursa (job #1750025) | Cod sursa (job #1967161) | Borderou de evaluare (job #2013228) | Cod sursa (job #2032623)
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("mins.in");
ofstream g("mins.out");
int C,D,nr[1001],nr1;
long long rez;
bool viz[1000001],x[1001],y[1001];
void ciur(int u){
for(int i=2;i<=u;++i)
if(!viz[i]){
nr[++nr1]=i;
for(int j=i;j<=u;j+=i);
viz[i]=1;
}
}
bool cmmdc1(int a,int b){
int i=1;
while(a>1 && i<=nr1){
if(!(a%nr[i])){
x[i]=1;
while(!(a%nr[i]))a/=nr[i];
}
++i;
}
i=1;
while(b>1 && i<=nr1){
if(!(b%nr[i])){
y[i]=1;
while(!(b%nr[i]))b/=nr[i];
}
++i;
}
for(int i=1;i<=nr1;++i)
if(x[i] && y[i])
return false;
return true;
}
int main()
{
f>>C>>D;
if(C>D)
swap(C,D);
ciur(D);
rez=C-1;
for(int i=2;i<=C;++i)
for(int j=2;j<i;++j){
if(cmmdc1(i,j))
++rez;
memset(x,0,sizeof(nr1));
memset(y,0,sizeof(nr1));
}
rez+=D-C;
for(int i=C+1;i<=D;++i)
for(int j=2;j<i;++j){
if(cmmdc1(i,j))
++rez;
memset(x,0,sizeof(nr1));
memset(y,0,sizeof(nr1));
}
g<<rez;
return 0;
}