测试发现用int型也可以,因为给出的范围是int型的,之后也做了平方根运算。
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n,m,ansi,anslen=0;
cin>>n;
m=(int)sqrt(1.0*n);
for (int i=2;i<=m;i++)
{
long long j=i,num=0,temp=1;
while(1)
{
temp=temp*j;
if(n%temp!=0)
break;
else
{
num++;
j++;
}
}
if(num>anslen)
{
ansi=i;
anslen=num;
}
}
if(anslen==0)
{
printf("1\n");
printf("%d",n);
}
else
{
printf("%d\n",anslen);
for (int i=ansi;i<anslen+ansi;i++)
{
printf("%d",i);
if(i!=anslen+ansi-1)
printf("*");
}
}
}