Cod sursa(job #1330600)

Utilizator czlateaZlatea Cezar czlatea Data 30 ianuarie 2015 20:08:10
Problema Divizori Primi Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#include <cmath>
using namespace std;
const int NMAX=1000000;
short int d[NMAX+5];
void ciurdiv(int n)
{
    int i,j,k;
    for(i=2;i<=n;i+=2)
        d[i]++;
    for(i=3;i<=n;i+=2)
    {
        if(!d[i])
        for(j=i;j<=n;j+=i)
            d[j]++;
    }
}
int main()
{
    freopen("divprim.in","r",stdin);
    freopen("divprim.out","w",stdout);
    int t,i,n,p;
    scanf("%d",&t);
    ciurdiv(1000000);
    int k,ok=0;
    for(i=1;i<=t;i++)
    {
        scanf("%d%d",&n,&p);
        k=n;
        ok=0;
        while(d[k]!=p&&k>=1)
        {
            k--;
            if(d[k]==p)
            {
                ok=1;
                break;
            }
        }
        if(ok)
        printf("%d\n",k);
        else
            printf("0\n");
    }
    return 0;
}