判断与N第K个互质的数,暴力判断前N个数中与K互质的数,N之后的数都是N之前的加上N的倍数。
#include <iostream>
using namespace std;
int prime[1000000];
int gcd(int a,int b)
{
if(!a || !b)
return a>b?a:b;
for(int t;t=a%b;a=b,b=t)
;
return b;
}
int main()
{
int m,k,i;
while(cin>>m>>k)
{
int t=0;
for(i=1;i<=m;i++)
if(gcd(m,i)==1)
prime[++t]=i;
if(k%t==0)
cout<<m*(k/t-1)+prime[t]<<endl;
else
cout<<m*(k/t)+prime[k%t]<<endl;
}
return 0;
}