#include<stdio.h>
int main()
{
long n;
static int t;
int t1=0;
int q=2;
int p;
scanf("%d",&n);
long n1;
static int a[30];
n1=n;
// 设置一个小数 循环即可
while(q<10)
{
// 保存n值
n=n1;
// 初始化t 值
t=0;
// 设置一个p 作为 除数,当 n 小于除数时,停止循环 最先试水的除数 是2 。。。。。然后 下一轮while 3…
for(p=q;n>=p;p++)
{
// 当n 可以被这个p 余 为0 一定可以整除,这时 n除以这个除数,然后用t 记录一个值,连续就一直加
if(n%p0)
{
n=n/p;
t++;
if(n1&&t>t1)
{
t1=t;
// 这里的n=1,是为了 保证最后正好除完 之后 无法对最后的 连续因子作判断,然后进行保存数组。
for(int h=0;h<t1;h++)
{
a[h]=p-t+h+1;
}
}
}
// 这里else进行的条件是n不可以被p 整除的数,也就是连续断裂,
else
{
// 如果这个时候的连续 t值大于t1,把t给t1,t归零
if(t>t1)
{
t1=t;
// 这里 必然是连续断裂才会发生的,所以在这儿对 数组进行给与数值
for(int h=0;h<t1;h++)
{
// p数值 为 当前 除数(第一个开始不能被整除的数) t 也就是连续的个数,回归最原始一开始连续的那个除数,
// 然后初始h=0;进行把所有连续的除数给与数组
a[h]=p-t+h;
}
}
// t归零
t=0;
}
}
// q++,然后进行开始 3。。。。。。。。。。。。的循环判断
q++;
}
printf("%d\n",t1);
// 输出
for(int h=0;h<t1;h++)
{
if(h!=t1-1)printf("%d*",a[h]);
else
{
printf("%d",a[h]);
}
}
return 0;
}
不考虑第六个超时的话,前2个为什么会出现答案错误,萌新求解~~
L1-006连续因子
最新推荐文章于 2022-04-12 13:49:52 发布