Cod sursa(job #89368)

Utilizator Matei14Popa-Matei Mihai Matei14 Data 6 octombrie 2007 17:36:09
Problema Divizori Primi Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<stdio.h>
int main(){
	int n,k,i,j,t,s,ok,q,d,p,v[10000];
	freopen("divprim.in","r",stdin);
	freopen("divprim.out","w",stdout);
	scanf("%d",&t);
	for(i=0;i<t;++i){
		scanf("%d",&n);
		scanf("%d",&k);
		ok=1;
		if(k==0 && n<2)
			printf("0\n");
		else
			if(k==1 && n<2)
				printf("0\n");
		else
			if(k==2 && n<6)
				printf("0\n");
		else
			if(k==3 && n<30)
				printf("0\n");
		else
			if(k==4 && n<210)
				printf("0\n");
		else
			if(k==5 && n<2310)
				printf("0\n");
		else
			if(k==6 && n<30030)
				printf("0\n");
		else
			if(k==7 && n<510510)
				printf("0\n");
		else
		for(j=n;j>=0 && ok;--j){
			s=0;
			if(j%2==0)
				s++;
			ok=1;
			d=0;
			for(q=3;q<=j;q+=2){
				ok=1;
				for(p=0;p<d && ok;++p)
					if(q%v[p]==0 && q!=v[p])
						ok=0;
				if(j%q==0 && ok){
					s++;
					v[d]=q;
					d++;
				}
				ok=1;
			}
			if(k==s){
				printf("%d\n",j);
				ok=0;
			}
		}
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}