最后集合中的数全部都是质因数。

假设 n 有 p 个质因数,那么这场游戏将进行 p-1 次操作(每次操作后集合中的数字个数+1),如果 p-1 为奇数那么后手便无法再进行操作,如果 p-1 为偶数则先手再无法进行操作。

特判n为1的情况。

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    scanf("%d", &n);
    if (n == 1) printf("Nancy\n");
    else {
        int num = 0;
        for (int i = 2; i <= n; i++)
            while (n % i == 0) n /= i, num++;
        printf(num & 1 ? "Nancy\n" : "Johnson\n");
    }
    return 0;
}