Cod sursa(job #194106)

Utilizator savimSerban Andrei Stan savim Data 8 iunie 2008 13:50:56
Problema Divizori Primi Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#define maxl 1000000

int i,j,k,n,t,gas;
int prim[maxl+10],prec[maxl+10];
int nr[80000];

int main()
{
    freopen("divprim.in","r",stdin);
    freopen("divprim.out","w",stdout);
    
    for (i=2; i<=maxl; i++)
        if (prim[i]==0)
        {
           nr[++k]=i;
           for (j=i; j<=maxl; j+=i)
               prim[j]=1;
        }
    
    for (i=1; i<=k; i++)
        for (j=nr[i]; j<=maxl; j+=nr[i])
            prec[j]++;
            
    scanf("%d",&t);
    while (t>0)
    {
        t--;gas=0;
        scanf("%d %d",&n,&k);
        for (i=n; i>=1; i--)
            if (prec[i]==k)
            {
               gas=1;
               printf("%d\n",i);
               break;    
            }
        if (!gas) printf("%d\n",gas);
    }
    
    return 0;    
}