|
板凳
楼主 |
发表于 2018-5-1 14:39:18
|
只看该作者
- #include<iostream>
- using namespace std;
- int n;
- int p[15]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47}; //前7个质数的乘积已经大于10^5说明不可能有超过7个质因子
- long long maxs=1; //约数最多的那个数
- int maxk=0;//最多的约数个数
- void mysearch(int i,long long s,long long j,long long k)
- //i表示深度(搜索到了第几个质因子)
- //s表示当前因子最多的那个数字
- //j表示最多含有多少个第i层的因子
- //k表示当前最多因子的个数
- {
- int jj;
- if(i>=9) return;
- if (k>maxk){maxs=s;maxk=k; cout<<maxs<<' '<<maxk<<endl;}
- for (jj=1;jj<=j;jj++)
- {
- s=s*p[i];
- if (s<=n) mysearch(i+1,s,jj,k*(jj+1));
- }
- }
- int main()
- {
- n=100000;
- mysearch(0,1,30,1);
- cout<<maxs<<' '<<maxk;
- }
复制代码 |
|