显然本题能操作的次数与n的质因子个数有关

当一个数被分解成质数后便不能再次分解

所以在质因数分解的函数中添加判断使其值不能被除到1即可

记录可操作次数,奇数答案为J,偶数为N



#include<bits/stdc++.h>
using namespace std;

int divide(int x)
{
	int cnt=0;
	for(int i=2;i*i<=x;++i)
	{
		while(x%i==0&&x!=i)
		{
			x/=i;
			cnt++;
		}
	}
	//if(x>1) cnt++;
    return cnt;
}
int main()
{
   int n;
   cin>>n;
   int tmp = divide(n);
   //cout<<tmp<<'\n';
   //if(!tmp) cout<<"Nancy\n";
   if(tmp&1) cout<<"Johnson\n";
   else cout<<"Nancy\n";
}