考察字符串+素数判断+质因子分解
解决办法:循环找到n的最小因子>=2,用map记录次数,最后遍历map组装string,判断是素数即可
注意点:n可能大于int范围,用long long
#include <iostream>
#include <cmath>
#include <map>
using namespace std;
bool isprime(long long m) {
for(long long i=2; i<=sqrt(m); i++) {
if(m%i==0) return false;
}
return true;
}
int main() {
long long n;
cin>>n;
map<int,int> mp;
while(n!=1) {
long long index = 2;
while(n%index != 0) {
index++;
}
mp[index]++;
n = n/index;
}
string str = "";
for(auto it:mp) {
str += to_string(it.first);
str += it.second == 1 ? "":to_string(it.second);
}
if(str==""){
cout<<n<<endl<<"No"<<endl;
}else{
cout<<str<<endl;
if(isprime(stoll(str))) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}