L1-006 连续因子
一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。
输入格式:
输出格式:
首先在第 1 行输出最长连续因子的个数;
然后在第 2 行中按 因子1*因子2*……*因子k 的格式输出最小的连续因子序列,
其中因子按递增顺序输出,1 不算在内。
输入样例:
630
输出样例:
3
5*6*7
内心复杂,最后还是没能靠自己完成。输在了程序思维上了。
#include<stdio.h>
#include<math.h>
int main()
{
int n;
int L, a, i;
long long int s ;
scanf("%d", &n);
int ns = sqrt(n);
for (L = 11; L > 0; L--)//长度
{
for (i = 2; i <= ns; i++)//开始乘
{
s = 1;
for (a = i; a <=( L - 1 + i); a++)//乘数
{
s *= a;
if (s > n)
break;
}
if (n % s == 0)
{
printf("%d\n%d", L, i);
for (int z = i + 1; z < a; z++)
{
printf("*%d", z);
}
printf("\n");
return 0;
}
}
}
printf("1\n%d\n",n);
return 0;
}