Python中文
首页
教程
问答
标签
搜索
登录
注册
使用逐位操作而不是测试偶数/奇数
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我试图理解这个素数分解的特殊解决方案(取自<a href="http://rosettacode.org/wiki/Prime_decomposition#Python:_Using_floating_point" rel="nofollow noreferrer">http://rosettacode.org/wiki/Prime_decomposition#Python:_Using_floating_point</a>),我对<code>step</code>定义中位运算符的用法有点困惑</p> <pre><code>def fac(n): step = lambda x: 1 + (x<<2) - ((x>>1)<<1) maxq = long(floor(sqrt(n))) d = 1 q = n % 2 == 0 and 2 or 3 while q <= maxq and n % q != 0: q = step(d) d += 1 return q <= maxq and [q] + fac(n//q) or [n] </code></pre> <p>我理解它的作用(乘以x3,如果x是偶数,则加1,如果x是奇数,则加2),但son不太明白在这种情况下为什么要使用位操作。除了这个公式明显简洁之外,是否有理由使用位运算符而不是更明确的解决方案:</p> ^{pr2}$ <p>如果有一个很好的理由(比如说,<code>(x>>1)<<1</code>比模运算更有效,正如<a href="https://stackoverflow.com/questions/18674977/using-bitwise-instead-of-modulus-operator-to-randomly-sample-integers-from-a-r">here</a>)所建议的那样,是否有一种从具有多个按位运算符的表达式中提取底层逻辑的通用策略?在</p> <hr/> <h2>更新</h2> <p>根据答案中的建议,我用步骤和步骤对版本进行计时,两者之间的差异是不可察觉的:</p> <pre><code> %timeit fac(600851475143) 1000 loops, best of 3: 306 µs per loop %timeit fac2(600851475143) 1000 loops, best of 3: 307 µs per loop </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>理论上,三位移位比一次乘法和一次除法更有效。在实践中,应该对这样的代码进行分析,以确保结果优化提供了足够的速度提升,以证明可读性的损失是合理的。在</p> <p>任何使用这种优化的代码都应该清楚地记录代码的作用以及为什么优化被认为是有用的,如果只是为了将来的维护人员着想,他们可能会想用更可读的代码替换代码。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何将Python中的列表复制到给定的目标中?
8 回答
如何将python中的列表插入SQL表
3 回答
如何将python中的列表转换为numpy数组以放入十位
6 回答
如何将python中的列表输入javascript?
8 回答
如何将python中的列表返回给dag?
4 回答
如何将Python中的列表项重新排列成成对的元组/列表?
7 回答
如何将Python中的初始化对象序列化为XML?
10 回答
如何将python中的十进制字符串转换为数字?
10 回答
如何将Python中的原始输入文本转换为Tkinter中的标签?
10 回答
如何将python中的反斜杠命令转换为在Linux上运行
6 回答
如何将python中的命令行参数转换为字典?
3 回答
如何将python中的图像值传递到kivy中的kv文件?
1 回答
如何将Python中的图像数组(枕头对象)上传到Google云
4 回答
如何将Python中的图像编码为Base64?
9 回答
如何将python中的图像调整为灰度低分辨率,如MNIST时尚数据?
1 回答
如何将python中的多个html输出保存到单个文件(或多个)中?
7 回答
如何将Python中的多个ifelse语句重构为一个函数?
8 回答
如何将Python中的多处理与Django结合使用,从xml文件创建数千个模型实例?
6 回答
如何将python中的多级API响应转换为dataframe
7 回答
如何将python中的多线程编程模型转换为异步/等待模型?
2 回答