小于N的大O?

问题描述

由于是完全自学的(和StackOverflow),我是Big-O符号的新手,在以后的一些采访中需要更好地理解它。

我的问题是,当复杂度小于N时,您如何在Big-O中进行注释?示例是一个质数计算器,它检查直到N/2的每个整数的余数,因为如果发现除数不小于一半,则可以确定上半部将没有除数。

那么O(N/2)还是N成为N = N/2的符号?

def primecheck(num):
  i = 2
  while i <= ( num // 2 ):
    if not (num % i):
      return False
    i += 1
  return True

解决方法

Big-O标记旨在忽略常量因子。只要k是一个常数(即与N无关的东西,例如1 / 2、1 / 3、1、2、3等),那么O(kN)的含义就完全是与O(N)相同。

,

Big-O表示法旨在表达仅变量的复杂性,在这种情况下,所有常量都将被忽略,因此n/2的表达方式与4n相同。但是素数检查是一个问题,只需要检查最多sqrt(n),因此问题仅是O(sqrt(n))