Mathematica的NextPrime为什么快那么多
用Mathematica做NextPrime,只需要1.25s;但我在Python上调用gmpy2(GMP的一个版本)的nextprime做同样的工作时,发现需要6s左右。我以为是Python本身效率不行,于是用C++测试了一下,发现GMP的nextprime所用时间还是6s左右,排除了编程语言的问题。
#include <gmp.h>
#include <iostream>
using namespace std;
int main() {
mpz_t t; //mpz_t
mpz_init(t);
mpz_ui_pow_ui(t,10,1000);
mpz_nextprime(t, t);
gmp_printf("%Zd\n", t);
mpz_clear(t);
return 0;
}
这该怎么解释呢?是算法的强度不同,还是计算上的优化? 你知道为什么用c语言写Linux与Unix,而不是c++吗?
因为C语言快!
mathematica就是用C语言写的 你比我强,居然还会用c++调用!
我这个菜鸟只会用mathematica 做比较之前,最好确定所用的素性判定算法一样!这样才有比较的价值 @wayne 这都是加上打印的时间吗
才1000位,打印时间可以忽略了... 282842712474 发表于 2014-10-30 09:57
@wayne 这都是加上打印的时间吗
才1000位,打印时间可以忽略了...
的确,1000位打印耗时可以忽略。
我刚才 测试了下:
楼主的GMP代码,gcc编译,运行耗时是1.54s,
命令行版本的Mathematica是1.03s wayne 发表于 2014-10-30 10:29
的确,1000位打印耗时可以忽略。
我刚才 测试了下:
楼主的GMP代码,gcc编译,运行耗时是1.54s,
1000位打印怎么能忽略啊!
页:
[1]