您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么Python 2.x中的math.factorial比3.x慢得多?

为什么Python 2.x中的math.factorial比3.x慢得多?

Python 2使用朴素的阶乘算法

1121 for (i=1 ; i<=x ; i++) {
1122     iobj = (PyObject *)PyInt_FromLong(i);
1123     if (iobj == NULL)
1124         goto error;
1125     newresult = PyNumber_Multiply(result, iobj);
1126     Py_DECREF(iobj);
1127     if (newresult == NULL)
1128         goto error;
1129     Py_DECREF(result);
1130     result = newresult;
1131 }

Python 3使用分治法阶乘算法

1229 * factorial(n)的形式为2 ** k * m,m为奇数。k和m是
1230 *单独计算,然后使用左移组合。

有关讨论,请参见Python Bugtracker问题。感谢DSM指出这一点。

python 2022/1/1 18:28:09 有179人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶