#include <bits/stdc++.h>
using namespace std;
bool zs(int n);
int main() {
string s;
long long n = 1;
cout << "Enter the number=\n";
bool flag = false;
while (!flag) {
n = 0;
cin >> s;
flag = true;
bool negative = false;
for (int i = 0; i < s.size(); i++) {
if (s[i] == '-' && (s[i + 1] >= '0' && s[i + 1] <= '9')) {
negative = true;
flag = false;
}
if (s[i] >= '0' && s[i] <= '9') {
if (!negative) {
n = n * 10 + (s[i] - '0');
flag = false;
}
}
}
if (flag)
continue;
cout << "Prime? ";
if (n > 40000000) {
cout << "No!\nThe number is too large!";
} else if (negative || n == 1 || (n == 0 && !flag)) {
cout << "No!";
} else if (zs(n) || n == 2) {
cout << "Yes!";
} else if (!zs(n) && n >= 4) {
cout << "No!\n" << n << '=';
bool b = true;
for (int i = 2; i <= n; i++) {
int k = 0;
while ( !(n % i) ) {
k++;
n /= i;
}
if (k) {
if (b) {
cout << i << '^' << k;
b = false;
} else
cout << '*' << i << '^' << k;
}
}
}
cout << "\n\nEnter the number=";
}
}
bool zs(int n) {
for (int i = 2; i <= int(sqrt(n + 0.5)); i++)
if (n % i == 0)
return false;
return true;
}