#include<iostream> #include<cmath> #define ll long long //-2^64“ 到”2^64 -1 using namespace std; int main() { ll n; //输入的数 ll sum=0,start; //sum代表因子总数,start代表连续因子开始的位置 cin>>n; for(int i=2;i<=sqrt(n);i++) { if(n%i!=0) //如果不是因子跳过 continue; ll a=n; //这里要转存一下 ll b=i; ll num=0; while(a%b==0&&a!=0) //暴力得到所有连续因子 { a/=b; //保证了得到的是刚好乘积等于n的连续因子 b++; //让b增加得到连续 num++; //记录连续因子个数 } if(sum<num) { sum=num; //更新sum,此处不能用<=,因为我们时从小到大遍历的,所以当长度相同时不交换 start=i; //得到起始位置 } } if(sum==0) //代表只能被自己整除,是素数 { cout<<1<<endl<<n<<endl; } else{ cout<<sum<<endl; for(int i=start;i<sum+start;i++) { if(i-start==0) //如果只有一个前面就不需要*号了 cout<<i; else cout<<"*"<<i; } } return 0; }
标签:int,ll,long,start,因子,64,连续 From: https://www.cnblogs.com/bzsc/p/17524798.html