Cod sursa(job #3219775)
Utilizator | Andrei Bogdan bogdibogdi | Data | 1 aprilie 2024 10:33:54 |
---|---|---|---|
Problema | Divizori Primi | Scor | 10 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.92 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("divprim.in");
ofstream fout ("divprim.out");
int t,n,k;
bool prim(int x)
{
if(x==2) return 1;
if(x%2==0) return 0;
for(int i=3;i*i<=x;i+=2)
if(x%i==0)
return 0;
return 1;
}
int divpr(int x)
{
int d=0,i;
if(x==2) return 1;
for(i=2;i*i<x;i++)
if(x%i==0)
if(prim(i))
{
d++;
if(prim(x/i))
d++;
}
if(i*i==x) if(prim(i)) d++;
return d;
}
int main()
{
fin>>t;
while(t--)
{
int ok=0;
fin>>n>>k;
while(n)
{
if(divpr(n)==k)
{
ok=1;
fout<<n<<endl;
break;
}
n--;
}
if(!ok) fout<<0<<endl;
}
return 0;
}