Pagini recente » Cod sursa (job #2965642) | Cod sursa (job #174602) | Cod sursa (job #1859492) | Cod sursa (job #2714989) | Cod sursa (job #980536)
Cod sursa(job #980536)
#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;
if(n==1)
{
fout<<p+1<<'\n';
return 0;
}
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;
}