#include<bits/stdc++.h>
using namespace std;
int main(){
long long int n;
scanf("%lld",&n);
int a=sqrt(n*1.0),temp=1,first=0,len=0;
for(int i=2;i<=a;i++){
int j;
temp=1;
for(j=i;j<=a;j++){
temp*=j;
if(n%temp!=0){
break;
}
}
if(j-i>len){
first=i;
len=j-i;
}
}
if(first==0){
printf("1\n");
printf("%lld",n);
}
else{
printf("%d\n",len);
printf("%d",first);
for(int i=first+1;i<first+len;i++){
printf("*%d",i);
}
}
return 0;
}
总结
1.上限时sqrt(n*1.0)因为是连续的几个数相乘
2.两个for循环,一个固定起点,另一个提供连续的乘数,直到不能整除为止记录first 以及长度即可,temp需crt
枚举连乘直到不能乘为止
英语
问题无