一开始思路错了,参考了这里的解法。
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main(){
int n;
scanf("%d", &n);
pair<int,int> p;
int len = 0;
int r = sqrt(n);
for(int i = 2; i <= r; ++i){
int j = i;
int nn = n;
while(nn % j == 0){
nn /= j;
j++;
}
if(len < j-i){
len = j-i;
p = {i,j-1};
}
}
if(len > 0){
printf("%d\n", len);
bool first = true;
for(int i = p.first; i <= p.second; ++i){
if(first) first = false;
else printf("*");
printf("%d", i);
}
}else{
printf("1\n");
printf("%d", n);
}
return 0;
}