方法一:
#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;
int main()
{
ll n;
cin >> n;
ll prd = 0; //定义乘积
int start = 0, len = 0; //定义最终得到序列开始的因子,序列的长度
for (int i = 2; i <= sqrt(n); i++) //i从2到根号n
{
prd = 1;
for (int j = i; prd * j <= n; j++) //从j开始一直乘到N为止,每次乘积判定是否小于等于N,若超过N,则结束循环
{
prd *= j; //乘积迭代
if (n % prd == 0 && j - i + 1 > len) //如果当前乘积为N的乘积因子且长度大于上一次
{ //更新序列起始因子和长度
start = i;
len = j - i + 1;
}
}
}
if (start == 0) //若起始因子为0,说明N为质数,因为质数=1*本身,而循环最多能表示1*本身的根号
{
start = n;
len = 1;
}
cout << len << '\n' << start;
for (int i = start + 1; i < start + len; i++) //输出,如果因子只有一个只输出一个
cout << '*' << i;
return 0;
}
方法二: