询问遍历至sqrt(n)的isPrime方法的时间复杂度(Big O)
遍历至√n的isPrime方法时间复杂度分析
请问以下方法的时间复杂度(Big O)是多少?
boolean isPrime( num ) i = 2 while i <= sqrt(num) if num % i == 0 return false i += 1 return true
我认为其时间复杂度为O(√n),这并非常见答案。
以下是表格用于阐明我的推理:
在该表格中,每当N变为原来的4倍时,迭代次数仅翻倍。
| N | 迭代次数 = √N |
|---|---|
| 4 | 2 |
| 16 | 4 |
| 64 | 8 |
| 256 | 16 |
| 1024 | 32 |
为了与线性函数的行为形成对比,如果我们改为循环条件为while i <= num/2,则表格如下:
| N | 迭代次数 = N/2 |
|---|---|
| 4 | 2 |
| 16 | 8 |
| 64 | 32 |
| 256 | 128 |
| 1024 | 512 |
此时每当N变为原来的4倍时,迭代次数也变为原来的4倍,即运行时间与N成正比。
内容的提问来源于stack exchange,提问作者jazz2e10
相关产品推荐
相关产品推荐

