急求大神,最好有代码,如何判断一个极大的数是否是素数?一般怎么存储大数?
大数判断是否是素数这个是世界难题,即便是顶尖的数学家也苦于研究而没有什么收获。对于2^n-1是不是素数,倒是有办法,但是也是非常耗费时间的。
这里说的大数,一般是指十进制写出来几百位几千位的数。如果是十几位的数(几十亿几十兆这个级别的),可以通过素数表找到2~这个数的平方根之间的素数,分别整除判定
有个东西叫Miller Rabin素数测试。
大概意思是,对于一个数 N ,多次随机选取 x 小于 N ,如果每次 x 的 N-1 次方在模 N 意义下等于 1 ,那么就认为 N 是个素数。
这个算法有些时候会出错,但大部分情况下是够用了。