首页 新闻 会员 周边 捐助

“Eratosthenes筛选法”的时间复杂度

0
[已关闭问题] 关闭于 2016-09-23 11:43

代码:

复制代码
 1 flag = (char *)malloc(sizeof(char)* N);    
 2 memset(flag, '1', sizeof(char)* N);
 3 
 4 for (i = 2; i < N; i++)
 5 {
 6     if (flag[i] == '1')
 7     {
 8         printf("%d\t", i);
 9         for (j = 1; j*i < N; j++)
10             flag[j*i] = '0';
11     }
12 }
13 free(flag);
复制代码

外层for的运行时间是线性的。而if()语句内的for循环,我只能理解每次循环将问题规模排除一部分,所以内层for是对数级的。答案似乎是O(NloglogN),那么内层for就是O(loglogN)的,怎么推呢?脑袋要炸了!!!

mingc的主页 mingc | 菜鸟二级 | 园豆:204
提问于:2016-09-22 22:58
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册