版权声明:本文由作者原创,如需使用请联系作者,侵权必究 https://blog.csdn.net/Elliot_Alderson/article/details/88844488
本身这道题其实不是什么难题,不过想起来带我的学长说过的一句话“在做题之前,把题目背下来都不为过。”,题目总结也就是两点,一点是你找出的序列必须可以连续相乘且被给出数字整除,然后质数状态忽略1即可,这里给出过了的代码。
#include<stdio.h>
#include<math.h>
int main()
{
int start, len;
start = len = 0;
int n;
scanf("%d", &n);
for (int i = 2; i <= (int)sqrt(n); i++)
{
long long int prd = 1;
for (int j = i; j * prd <= n; j++)
{
prd *= j;
if (n % prd == 0 && j - i + 1 > len)
{
start = i;
len = j - i + 1;
}
}
}
if (start)
{
printf("%d\n", len);
for (int i = 0; i < len; i++)
{
printf(i == len - 1 ? "%d\n" : "%d*", i + start);
}
}
else
{
printf("1\n%d\n",n);
}
return 0;
}