Pagini recente » Cod sursa (job #1191221) | Cod sursa (job #2370302) | Cod sursa (job #1885338) | Cod sursa (job #3156440) | Cod sursa (job #1973634)
#include <fstream>
using namespace std;
long long int N,P,Aux,k,i,Fi,S,j,Nr,Fact[1000],Limit1,Limit2;
int main()
{
ifstream fin("frac.in");
ofstream fout("frac.out");
fin>>N>>P;
Aux=N;
k=0;
for(i=2;i<=N and Aux>1;i++)
if(Aux%i==0)
{
while(Aux>1 and Aux%i==0)
Aux=Aux/i;
k++;
Fact[k]=i;
}//for
Fi=N;
for(i=1;i<=k;i++)
Fi=Fi/Fact[i]*(Fact[i]-1);
if(P<=Fi)
{
Limit1=1;
Limit2=N;
}//if
else
{
S=0;
i=0;
while(S+Fi<=P)
{
S+=Fi;
i++;
}//while
Limit1=N*(i-1);
Limit2=N*i;
Nr=Fi*(i-1);
}//else
for(i=Limit1;i<=Limit2;i++)
{
for(j=1;j<=k;j++)
if(i%Fact[j]==0)
break;
if(j==k+1)
{
Nr++;
if(Nr==P)
break;
}//if
}//for
fout<<i;
fin.close ();
fout.close();
return 0;
}