Cod sursa(job #1803577)

Utilizator andreinichitaTirziu Nichita andreinichita Data 11 noiembrie 2016 16:50:53
Problema Divizori Primi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <cstdio>

using namespace std;
bool ciur[1000000];
void ciurul()
{
    int I, J;
    for(I=2; I<=1000000; I++)
        ciur[I] =1;
    for (I=2; I<=1000000; I++)
        if(ciur[I] == 1)
            for(J=2; J*I <= 1000000; J ++)
                ciur[I*J] = 0;
}
int nrdivprim(int n,int k)
{
    ciurul();
    int d,nr=0;
    for(d=2; d<=n; d++)
        if(ciur[d]&&n%d==0)
            nr++;
    if(nr==k)
        return 1;
    return 0;
}
int main()
{
    freopen("divprim.in","r",stdin);
    freopen("divprim.out","w",stdout);
    int t,n,k,i,j,ok;
    scanf("%d",&t);
    for(i=1; i<=t; i++)
    {
        ok=0;
        scanf("%d%d",&n,&k);
        for(j=n; j>=1; j--)
            if(nrdivprim(j,k))
            {
                ok=1;
                printf("%d\n",j);
                break;
            }
        if(ok==0)
            printf("0\n");
    }
    return 0;
}