Cod sursa(job #167483)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 29 martie 2008 17:11:36
Problema Divizori Primi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <stdio.h>

long N,k,i,j,p[3000],ok,q,x,d;
long a[8][500000],T,low,mid,high,l[8];

int main(){
    freopen("divprim.in","r",stdin);
    freopen("divprim.out","w",stdout);
    
    i=5;
    p[1]=2;
    p[2]=3;
    q=2;
    while (i<=15000){
          ok=0;
          j=1;
          while (p[j]*p[j]<=i){
                if (i%p[j]==0){ok=1;break;}
                j++;
          }
          if (!ok){p[++q]=i;}
          i+=2;
    }
    l[0]=1;a[0][1]=1;
    for (i=1;i<=1000000;i++){
        x=i;j=1;d=0;
        while (x!=1&&p[j]*p[j]<=x){
              if (x%p[j]==0){
                 d++;
                 while(x%p[j]==0){x/=p[j];}
              }
              j++;
        }
        if (x>1)d++;
        l[d]++;
        a[d][l[d]]=i;
    }    
    /*
    scanf("%ld",&T);
    for (;T;T--){
        scanf("%ld %ld",&N,&k);
        low=1;
        high=a[k][0]+1;
        while (low<high){
              mid=(low+high)/2;
              if (a[k][mid]>N)
                 high=mid;
              else low=mid+1;
        }
        if (low<=a[k][0]+1 && a[k][low]==N)printf("%ld\n",N);
        else if (low>1)printf("%ld\n",a[k][low-1]);
             else printf("0\n");
    }
    */
return 0;
}