// yukicoder: No.36 素数が嫌い! // 2019.4.7 bal4u // 判定: Nが素数、2つの素数の積、その他 #include #include int tbl[21] = { 0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,1,0,1 }; // return 1:素数 2:素数2つの積 3:3つ以上素数の積 0: 2つの数の積 int cntPrime(long long *x, long long *y, long long z) { int i, k, n = 0; if ((z & 1) == 0) { do z >>= 1, n++; while ((z & 1) == 0); if (n >= 3) return 3; } // if (z == 1) return n; k = (int)sqrt((double)z); for (i = 3; i <= k; i += 2) { if (z % i == 0) { if (n > 0) return 3; *x = i, *y = z / i; return 0; } } return n + 1; } int main() { int ans; long long x, y, N; scanf("%lld", &N); if (N <= 20) ans = tbl[N]; else { ans = cntPrime(&x, &y, N); if (ans > 0) ans = (ans >= 3); else { long long a, b; ans = (cntPrime(&a, &b, x) != 1 || cntPrime(&a, &b, y) != 1); } } puts(ans ? "YES" : "NO"); return 0; }