Cod sursa(job #489959)

Utilizator robigiirimias robert robigi Data 4 octombrie 2010 11:56:52
Problema Divizori Primi Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>
#include <cstring>

using namespace std;

FILE *f=fopen("divprim.in", "r");
FILE *g=fopen("divprim.out", "w");

typedef struct ciur
{
	int nr;
	bool k;
};

ciur cv[1000000];

int t;


void era()
{
	for (int m=2; m<=100000; m+=2)
	{
		cv[m].nr++;
		cv[m].k=1;
	}

	for (int i=3; i<=100000; i+=2)
	{
		if (cv[i].k==1)
		{
			continue;
		}
		for (int j=i; j<=100000; j+=i)
		{
			cv[j].nr++;
			cv[j].k=1;
		}
	}
}

int erathostenes(int n, int k)
{ 
	for (int l=n; l>=1; l--)
		if (cv[l].nr==k) return l;
	return 0;
}



int main()
{
	fscanf(f, "%d", &t);
	era();
	for (int i=1; i<=t; ++i)
	{
		int n, k;
		fscanf(f, "%d%d", &n, &k);
		fprintf(g, "%d\n", erathostenes(n, k));
	}
	
	
	fclose(f);
	fclose(g);
	
	return 0;
}