标题: [L,R]中哪个数的约数最多 [打印本页] 作者: diggersun 时间: 2016-8-7 14:49 标题: [L,R]中哪个数的约数最多 //求10^5内谁的约数最多
#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=99999999;
mysearch(0,1,30,1);
cout<<maxs<<' '<<maxk;
} 作者: hr567 时间: 2016-8-9 08:41