题目连接
一开始错了两个测试点,就是没好好读题,理解错题目意思了
例如:60 正常分解的话是2×3×4×5×6,但是题目好像不是这个意思。。。。
题目的意思应该是把60分一下,它的分解因子的乘积应该是等于60的,然后这些因子里找最大连续的因子,结果应该是3×4×5
这题只要读懂题目就能a吧…
#include<bits/stdc++.h>
using namespace std;
inline bool IsPrime(int x){
if(x==2||x==3){
return 1;
}
else if(x%6!=1&&x%6!=5){
return 0;
}
else{
for(int i=5;i<=sqrt(x);i+=6){
if(x%i==0||x%(i+2)==0){
return 0;
}
}
}
return 1;
}
int main(){
int n;
scanf("%d",&n);
if(IsPrime(n)){
printf("1\n%d",n);
return 0;
}
int count=0,ret,ans=0;
for(int i=2;i<=sqrt(n);i++){
int j=i;
int t=n;
count=0;
while(t){
if(t%j==0){
count++;
}
else{
break;
}
t/=j;
j++;
}
if(count>ans){
ans=count;
ret=i;
}
}
printf("%d\n",ans);
bool f=0;
for(int i=ret;i<ret+ans;i++){
if(f){
printf("*");
}
f=1;
printf("%d",i);
}
return 0;
}