解题思路:
求一个整数的因子序列,首先要牢记的是这个数对每一个因
子都能整除(本题的误导点就在这).题目给出的示例表明没有因
子1,所以整个题目分为两块,第一块素数,第二块不是素数.
如果是素数的话只需要输出1和这个整数本身就行了.
不是素数的情况下:先从最小的数2开始除,如果整除的话就
可以使这个数进行自增操作了,计数器也自增.等循环结束了,记
录开始位置和最大因子个数并进行输出.
#include <stdio.h>
#include <math.h>
int main()
{
int n,count,start,mc=0;
scanf("%d",&n);
for(int i=2;i<=sqrt(n);i++)
{
count=0;
int t=n,j=i;
while(t%j==0)
{
t=t/j;
j++;
count++;
}
if(count>mc)
{
start=i;
mc=count;
}
}
if(mc)
{
printf("%d\n",mc);
for(int i=0;i<mc;i++)
{
printf("%d",start+i);
if(i!=mc-1)
printf("*");
}
}
else
printf("%d\n%d",1,n);
return 0;
}