求
其中为数
的约数的个数,
为常数。
结论发现 范围的数全部满足上述公式,
范围的数只有
个不满足上述公式。
时
| 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);
} 
京公网安备 11010502036488号