原题链接
解题思路:原本是想先求出所有的因子再进行处理,但此方法非常繁琐暴力。既然输出的都是连续的,那直接判断连续的几个数是不是N的因子就好了
代码实现:
#include# include int main() { long long int sum,N; int i,j,first=0,new_num=0,num=0; scanf("%ld",&N); for(i=2;i<=sqrt(N);i++) { sum=1; num=0; //找到最大的因子sum for(j=i;N%(sum*j)==0;j++) { num++; sum=sum*j; } //只有连续因子数大于原来的时候才能进行更改,保证了输出的连续因子是最长的 if(num>new_num) { first=i;//first用来记录连续因子中最小的数 new_num=num; } } if(new_num==0) printf("%dn%dn",1,N); else { printf("%dn",new_num); for(i=first;i



