标题我真的不知道该怎么写了!经历了这么多运算后!
1152921504606846974%2
15.9 ns ± 0.0631 ns per loop (mean ± std. dev. of 7 runs, 100000000 loops each)
2%2
15.9 ns ± 0.0672 ns per loop (mean ± std. dev. of 7 runs, 100000000 loops each)
我在想,这东西丢给cpu算,效率几乎一样的,即便是丢给他一个超出64位的去运算,也高不了多少,那么在去质数操作中,我是让质数累乘后去和X对比,还是X一遍遍的去除以质数。
大家先别写,自己思考下,是否有肯定的判断结果。
然后我写了下,我去~
%%timeit
a=1152921504606846974
i=2
while 1:
a=a/i
if a%1!=0:break
11.6 µs ± 81.3 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%%timeit
a=1152921504606846974
i=2
while 1:
t=a/i
if t%1!=0:break
i*=2
32.3 µs ± 662 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
步骤和变量都是有差别的,效率更是差很多,想和做是两码事,关键是思维和转化成代码时,会不可避免的写出思维与代码间的架构,而这些思维以外又不得不存在的东西,是思维的不够谨慎还是懒惰还是现实,总之写出来后,变量多了一个,操作多了一行,耗时增加到近3倍。虽然很好奇,为什么增加了这么多。
是%%timeit的疏漏还是某些过程真的很耗时。
%%timeit
a=1152921504606846974
i=2
for j in range(60):
a=a/i
if a%1!=0:break
13 µs ± 37.1 ns per loop