代码:
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)的,怎么推呢?脑袋要炸了!!!