问题描述
我了解到,除非操作数“真的很大”,否则基本算术运算将在固定时间O(1)
中执行。因此,我尝试过这样的期望via_str_method
在达到某些边界时将更快地执行:
import time
import math
start_time = time.time()
class OddNumbers:
ODD_ONES = ["1","3","5","7","9"]
def __init__(self,n):
assert type(n) == int
self.n = n
self.str_n = str(n)
def via_str_method(self):
return True if self.str_n[-1] in self.ODD_ONES else False
def via_mod_method(self):
return True if self.n % 2 != 0 else False
n = int(math.pow(2,1023))
odd_one = OddNumbers(n)
if odd_one.via_str_method():
print("Number is ODD")
else:
print("Number is EVEN")
str_end_time = time.time()
print(f"STR method time: {str_end_time - start_time}")
if odd_one.via_mod_method():
print("Number is ODD")
else:
print("Number is EVEN")
print(f"MOD method time: {time.time() - str_end_time}")
但是即使使用2**1023
(我认为它已经足够大了),这两种方法仍会在恒定时间内执行。
我想知道是否有人可以向我解释什么是“真正的大整数”,以及如何生成一个并在代码中使用它。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)