Cod sursa(job #2284941)

Utilizator nicholascantarNicholas David Cantar Gogitidze nicholascantar Data 17 noiembrie 2018 19:37:20
Problema Mins Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.59 kb
#include <fstream>
#include <iostream>
using namespace std;
int min1,max1,v[10010],i,j,cp,sol,ok,c,d,m,x,y,div;
bool ciur[1000010];
int main()
{
    ifstream fin ("mins.in");
    ofstream fout ("mins.out");
    fin>>c>>d;
    min1=min(c,d);
    max1=max(c,d);
    for(div=2;div*div<=min1;div++)
    {
        if(ciur[div]==0)
        {
            m++;
            v[m]=div;
            for(i=div*div;i<=min1;i=i+div)
                ciur[i]=1;
        }
    }
    if(div==v[m]) div++;
    for(i=div;i<=min1;i++)
    {
        if(ciur[i]==0)
        {
            m++;
            v[m]=i;
        }
    }
    for(x=2;x<=min1;x++)
    {
        for(y=1;y<=x;y++)
        {
            i=1;
            ok=1;
            cp=y;
            while(v[i]*v[i]<=cp&&ok)
            {
                if(cp%v[i]==0)
                {
                    if(x%v[i]==0) {ok=0;break;}
                    while(cp%v[i]==0) {cp=cp/v[i];}
                }
                i++;
            }
            if(cp!=1&&x%cp==0) ok=0;
            if(ok==1) sol++;
        }
    }
     for(x=min1+1;x<=max1;x++)
    {
        for(y=1;y<=x;y++)
        {
            i=1;
            ok=1;
            cp=y;
            while(v[i]*v[i]<=cp&&ok)
            {
                if(cp%v[i]==0)
                {
                    if(x%v[i]==0) {ok=0;break;}
                    while(cp%v[i]==0) cp=cp/v[i];
                }
                i++;
            }
            if(cp!=1&&x%cp==0) ok=0;
            if(ok==1) sol++;
        }
    }
    fout<<sol;

    return 0;
}