约数个数和n的关系

其中为数 的约数的个数, 为常数。

结论发现 范围的数全部满足上述公式, 范围的数只有 个不满足上述公式。

t cnt
1 24387
2 6620
3 2172
4 699
5 214
6 54
7 11
8 0

t cnt
5 6310
6 2162
7 1047
8 353
9 152
10 93
11 19
12 5
13 0

t cnt
10 3391
11 1766
12 1009
13 692
14 250
15 137
16 70
17 29
18 5
19 2
20 0

t cnt
10 69268
11 53934
12 27657
13 18302
14 13410
15 8455
16 4953
17 3695
18 2413
19 1679
20 858
21 515
23 260
24 110
25 62
26 27
27 19
28 8
29 6
30 0

代码如下:

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5;
const int times=2;
int prime[MAXN];
int num[MAXN],d[MAXN];

void get_di()
{
    num[1]=1;
    for(int i=2;i<MAXN;i++){
        if(!prime[i]){
            prime[++prime[0]]=i;
            num[i]=2;
            d[i]=1;
        }
        for(int j=1;j<=prime[0]&&i<MAXN/prime[j];j++){
            prime[i*prime[j]]=1;
            if(i%prime[j]==0){
                d[i*prime[j]]=d[i]+1;
                num[i*prime[j]]=num[i]/(d[i]+1)*(d[i]+2);
                break;
            }
            num[i*prime[j]]=num[i]*2;
            d[i*prime[j]]=1;
        }
    }
}

int main(void)
{
    for(int i=0;i<MAXN;i++) prime[i]=num[i]=d[i]=0;
    get_di();
    int cnt=0;
    for(int i=2;i<MAXN;i++){
        if(num[i]>=times*(int)(log(i)/log(2))+1){
            cnt++;
            // printf("%d %d\n", num[i],i);
        }
    }
    printf("%d\n", cnt);
}
全部评论

相关推荐

11-13 20:16
已编辑
厦门理工学院 软件测试
专业嗎喽:硕佬,把学校背景放后面几段,学校背景双非还学院,让人看了就不想往下看。 把实习经历和个人奖项放前面,用数字化简述自己实习的成果和掌握的技能,比如负责项目一次通过率90%,曾4次发现项目潜在问题风险为公司减少损失等等
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务