#include<iostream>
using namespace std;
#include<cmath>
int isprime(int x)
{
for(int i=2;i<=sqrt(x);i++)
{
if(x%i==0) //注意是取余
return 0;
}
return 1;
}
int main()
{
int n;
cin>>n;
if(isprime(n))
{
cout<<"2"<<endl<<"1*"<<n<<endl;
}
else
{
int cout=0; //个数
int start=0; //起始位置
int m_cout=0; //最大
for(int i=2;i<=sqrt(n);i++)
{
cout=0;
int t=n;
int j=i;
while(t%j==0)
{
t=t/j;
j++;
cout++;
}
if(cout>m_cout)
{
start=i;
m_cout=cout;
}
}
cout<<m_cout<<endl;
for(int i=start;i<start+m_cout;i++)
{
if(i==start)
printf("%d",i);
else
printf("*%d",i);
}
}
return 0;
}
但是有一个点疑惑
error: invalid operands of types ‘int’ and ‘<unresolved overloaded function type>’ to binary ‘operator<<’
cout<<m_cout<<endl;中文为:对二进制'operator<<'的'int'和'<未解决的重载函数类型>'类型的操作数无效
改为printf就正确了