【发布时间】:2016-09-13 02:48:12
【问题描述】:
这个算法的时间复杂度是多少?
void prime(int n) {
int i = 2;
while ((n % i) && i <= sqrt(n))
i++;
if (i > sqrt(n))
print(“%d is a prime number\n”, n);
else
print(“%d is not a prime number\n”, n);
}
【问题讨论】:
-
为什么你认为
n是质数或非质数会改变复杂性? -
是的,我知道无论 n 是否为素数,复杂性都不会改变。所以我不知道它的复杂性。
-
那么你到底在问什么?您的评论与您问题的第一行直接矛盾。
-
如果将其限制在非质数正整数的域中,则可以保证在较小的因子处提前终止,这可能是(最坏的情况)sqrt(sqrt(n))。所以是的,它会改变。
标签: c++ complexity-theory