一些关于让deepseek编写计算π的程序杂乱感想 - l1t1/note GitHub Wiki

一些关于让deepseek编写计算π的程序杂乱感想

这两天让deepseek(v3不联网)帮我编写了几个计算π的python程序,两个只告诉他算法发明人名字Ramanujan和Chudnovsky,它就自己编出来了,看来他记住了不少复杂的数学公式,很大的系数也没记错,作为通用人工智能是合格的。

公式中的阶乘,第一版是用递归编写的,这有点意外,明明不如迭代高效,为什么会被采用呢?当提示他math模块有现成的factorial函数,他就采用了这个函数。当对Python自带的Decimal性能不满意,建议他改用gmp模块,他也很快改写好了,1万位用1秒钟, 这个结果,说实在有点意外,因为30年前的super-pi程序也比它快(1.6万位0.1秒)。

今天我自己浏览知乎,知道同样是Chudnovsky还有二进制分裂算法,把一个采用这个算法的c++程序丢给他,直接翻译成调用gmp的python程序,100万0.347秒完工,和c++程序的0.340秒几乎持平。再让他改写成调用Decimal,瞬间10万位降到0.1秒,比没用二进制分裂的Chudnovsky快了百倍,然而100万位又溢出了。这时他用动态配置足够大的上下文和把递归改成人工非递归实现避免栈溢出,运行花了11秒。递归改非递归这种人类困难的任务,对他好像是常规动作,不带失误的。

说完优化过程,说自己对这件事的看法,deepseek好像也会偷懒,通用技术能满足要求就绝不优化,机械翻译非常熟练(c++到python,以及递归改非递归),对专门库的调用方法也非常熟练。然而让它创造一个高效新算法很难,除非人心里有思路,并灌输给他,有时候不能一步到位,要多次提示。

顺便记录一下, 在Linux系统安装python gmpy2模块需要系统中装有gmp、mpfr(浮点)、mpc(复数)三个包(奇怪的是编译高版本gcc也需要它们),虽然可以用源码编译,在ubuntu中最简便的方法就是三下,

apt install libgmp-dev
apt install libmpfr-dev
apt install libmpc-dev