Cod sursa(job #94629)

Utilizator dReaMerAndrei Sofian dReaMer Data 24 octombrie 2007 10:30:00
Problema Divizori Primi Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.02 kb
# include <stdio.h>
int divprimi(int n){
	int i=2,nr=0;
   while (n!=1)
         {if (n%i==0)
           {nr++;
      	   while(n%i==0)
         	     n=n/i;
            }
         i++;
         }
   return nr;
   }

int prim(int n){
	int i;
   if(n==2)
   	return 1;
   if(n%2==0)
   	return 0;
   for(i=3;i*i<=n;i+=2)
   	if(n%i==0)
      	return 0;
   return 1;
}

int main (){
	int x,n,gata,i,k,d,t;
	freopen("divprim.in","r",stdin);
	freopen("divprim.out","w",stdout);
	scanf("%d",&t);
   for (i=1;i<=t;i++)
      {scanf("%d %d",&n,&k);
       if (k==7 && n<510510) printf("%d\n",0);
           else
             if (k==7 && n>=510510) printf("%d\n",510510);

       else {if (n==1 || prim(n)) printf("%d\n",0);
             else
            {gata=0;
             for (x=n;x>1 && !gata;x--){
				 d=divprimi(x);
                 if (d==k) {gata=1;
                            printf("%d\n",x);}
                }
             if (!gata) printf("%d\n",0);
			}
	   }
        }
	return 0;
}