其他分享
首页 > 其他分享> > 约数

约数

作者:互联网

约数个数问题:
1.1-n中的约数个数:
1.怎么求个数:分解质因子后
(c1+1)(c2+1)...
2.估算复杂度:1-n当中有每个数中的约数个数和
N/1+N/2+.. 总共是nlogn个
3.0-2e9 最多的约数个数是1600个数

T2

求n!的约数个数:

T3
转化思路:约数个数最多的最小的数

#include <stdio.h>
#include <algorithm>
#include <cstring>

using namespace std;
#define ll long long
int prime[9]={2,3,5,7,11,13,17,19,23};
int n;
int maxd,num;

inline void dfs(int j,int ci,int p,int yue)
{
    if(yue>maxd||(yue==maxd&&p<num))
    {
        num=p;
        maxd=yue;
    }
    if(j==9) return;//
    for(int i=1;i<=ci;i++)
    {
        if((ll)p*prime[j]>n) break;//此处考虑爆int 开ll
        p*=prime[j];
        dfs(j+1,i,p,yue*(i+1));
    }
    return;
}
int main()
{
    scanf("%d",&n);
    dfs(0,30,1,1);//从1开始
    printf("%d",num);
    return 0;
}
View Code

注意一下爆搜的写法:

T4hanson的趣味题

标签:约数,int,个数,maxn,include,yue
来源: https://www.cnblogs.com/ILHYJ/p/13739817.html