defisPrime(num): if num <2: returnFalse for i in range(2,num): if num % i == 0: returnFalse returnTrue number = 100 primeList = [] for i in range(number): if isPrime(i): primeList.append(i) print(primeList)
时间复杂度:O(n2)
暴力法的缺点就是时间复杂度太高
只考虑是否能够整除素数
primeList = [2] defisPrime(num): if num <2: returnFalse for i in primeList: if num % i == 0: returnFalse returnTrue number = 100 for i in range(number): if isPrime(i): primeList.append(i) print(primeList)
删除所有素数的倍数
number = 100 primeList = [Truefor i in range(0,number+1)] primeList[0],primeList[1] = False, False for index,i in enumerate(primeList): if i: j = 2 while j*index<=number: primeList[j*index] = False j+=1 for index,i in enumerate(primeList): if i: print(index,end=", ")
classEliasGamma: defdecode(self,str): valueStrList = self.get_binary_value_list(str) valueList = self.get_value_list(valueStrList) defget_value_list(self,valueStrList): result = [] for value in valueStrList: content = 0 for index,i in enumerate(value): if i=="1": content += 1 << (len(value)-index-1) result.append(content) return result defget_binary_value_list(self,str): i = 0 result = [] length = 0 if str[0]!="0": raise Exception("err") while i<len(str): if str[i]=="0": length += 1 i += 1 else: result.append(str[i:i+length+1]) i += length+1 length = 0 return result defencode(self,valueList): result = "" for value in valueList: str = self.get_binary_string(value) result += self.add_zero_to_head(str) print(result) defget_binary_string(self,value): result = "" if value <=0: return"0" while value: if value%2==0: result = "0" + result else: result = "1" + result value = value>>1 return result defadd_zero_to_head(self,str): result = str for i in range(len(str)-1): result = "0" + result return result if __name__ == '__main__': EliasGamma().decode("000101100011000001101") EliasGamma().encode([11,12,13])