Pagini recente » Cod sursa (job #2306830) | Cod sursa (job #2707674) | Cod sursa (job #1813965) | Cod sursa (job #729121) | Cod sursa (job #980534)
Cod sursa(job #980534)
#include<fstream>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;
ifstream fin("frac.in");
ofstream fout("frac.out");
long long n,p,i;
bool prim[110000];
vector<int>divs;
void ciur()
{
vector<int> pr;
int l=sqrtl(n)+1;
for(int i=2;i<=l;i++)
if(!prim[i])
{
for(int j=i+i;j<l;j+=i)
prim[j]=1;
pr.push_back(i);
}
if(binary_search(pr.begin(),pr.end(),n))
return;
for(size_t i=0;i<pr.size() && n>1;i++)
if(n%pr[i]==0)
{
divs.push_back(pr[i]);
while(n%pr[i]==0)
n/=pr[i];
}
}
int main()
{
fin>>n>>p;
ciur();
if(divs.empty())
{
fout<<p+(p>=n)<<'\n';
return 0;
}
size_t j;
for(i=1;p;i++)
{
for(j=0;j<divs.size();j++)
if(i%divs[j]==0)
break;
if(j==divs.size())
p--;
}
fout<<i-1<<'\n';
return 0;
}