Cod sursa(job #896472)

Utilizator mihail.jianuJianu Mihail mihail.jianu Data 27 februarie 2013 15:52:14
Problema Divizori Primi Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<cstdio>
const int N=1000001,D=8;
int ciur[N],p[N],m[N][D];
void prec(){
    int i,j,k=0;
    p[0]=1;
    for(i=2;i<=N;i++)
        if(!ciur[i]){
            p[k+1]=p[k]*i;
            k++;
            for(j=i;j<N;j+=i)
                ciur[j]++;
        }
}
void maxs(){
    int i,j;
    for(i=2;i<N;i++)
        for(j=0;j<D;j++)
            m[i][j]=m[i-1][j];
}
int main(){
    int k,t,i,j,n;
    freopen("divprim.in","r",stdin);
    freopen("divprim.out","w",stdout);
    prec();
    maxs();
    scanf("%d",&t);
    for(i=1;i<=t;i++){
        scanf("%d%d",&n,&k);
        if(k>=D || p[k]>n)
            printf("0\n");
        else
            for(j=n;j>=1;j--)
                if(ciur[j]==k){
                    printf("%d\n",j);
                    break;
                }
    }
    return 0;
}