这道题思路理清楚之后就不是很难了,如下:
#include <cstdio>
#include <cmath>
int isPrime (int n){
if (n<=1) return 0;
int sqr=sqrt(n);
for (int i=2; i<=sqr; i++){
if (n%i==0) return 0;
}
return 1;
}
int main(){
int n;
scanf("%d",&n);
if (isPrime(n)){
printf("1\n%d",n);
return 0;
}
int maxLen=0,num;
int sqr=sqrt(n);
for (int i=2; i<=sqr; i++){
int len=0,product=i;
while (n%product==0){
len++;
product*=i+len;
}
if (len>maxLen){
maxLen=len;
num=i;
}
}
printf("%d\n",maxLen);
for (int i=0; i<maxLen; i++){
if (i) printf("*");
printf("%d",num+i);
}
}