#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int isPrime(int n);//判断素数
int main()
{
   
    int n, temp, count = 0, a[20], max = 0, flag;
    scanf("%d", &n);//输入数字
    
    if (isPrime(n))//如果是素数,直接按照题意输出就行了
    {
   
        printf("1\n%d", n);//按题意输出
        return 0;//结束
    }
        
    for (int i = 2; i <= sqrt(n); i++)//遍历
    {
   
        temp = n;//每次都必须初始化temp和count
        count = 0;
        for (int j = i; j <= sqrt(n); j++)
        {
   
            if (temp % j == 0)//辗转相除的思想
            {
   
                count++;//计数加一
                temp /= j;//商
            }
            else
                break;
        }
        if (count > max)
        {
   
            max = count;//改变最大计数值
            flag = i;//flag是第一个要输出的数的标记
        }
    }
    printf("%d\n", max);//输出最大值
    for (int i = flag; i < flag+max-1; i++)
        printf("%d*", i);//输出到n-1位
    printf("%d", flag + max - 1);//输出第n位

    return 0;
}
int isPrime(int n)//判断素数
{
   
    if (n == 1)
        return 0;
    for (int div = 2; div <= sqrt(n); div++)
        if (n % div == 0)
            return 0;
    return 1;
}

#include<bits/stdc++.h>
using namespace std;
vector<int> ans; //向量容器vector
/* vector 1)可以直接访问任何元素。 2)线性顺序结构。可以指定一块连续的空间,也可以不预先指定大小,空间可自动扩展,也可以像数组一样被操作,即支持[ ]操作符和vector.at(),因此可看做动态数组,通常体现在追加数据push_back()和删除末尾数据pop_back()。 3)当分配空间不够时,vector会申请一块更大的内存块(以2的倍数增长),然后将原来的数据拷贝到新内存块中并将原内存块中的对象销毁,最后释放原来的内存空间。因此如果vector保存的数据量很大时会很消耗性能,因此在预先知道它大小时性能最优。 4)节省空间。因为它是连续存储,在存储数据的区域是没有浪费的,但实际上大多数时候是存不满的,因此实际上未存储的区域是浪费的。 5)在内部进行插入和删除的操作效率低。由于vector内部按顺序表结构设计,因此这样的操作基本上是被禁止的,它被设计成只能在后端进行追加和删除操作。 */
int main()
{
   
	int num; cin>>num;//输入数字
	for(int i=2;i<=num/i;i++)
	{
   
		if(num%i==0)
		{
   
			vector<int> temp;//vector容器temp 每一轮更新
			int m=num;
			for(int j=i;m%j==0;j++)//直到被整除
			{
   
				temp.push_back(j);//给temp尾部添加j元素;
				m/=j;//找余数
			}
			if(temp.size()>ans.size()) ans=temp;//ans的元素个数大于temp元素个数,ans改变
		}
	}
    if(ans.empty()) ans.push_back(num);	//此数没有因子,所以输出时只用输出自己即可
    //empty()判断容器是否为空 为空返回true,为假返回false
    
	cout<<ans.size()<<endl;//输出ans元素个数
	cout<<ans[0];//输出第一个元素
	for(int i=1;i<ans.size();i++) cout<<"*"<<ans[i];//遍历输出后面的元素
	return 0;
}

C++ vector常用用法

C++容器与迭代器