〇〇 发表于 2012-1-5 14:05
number的长度是22字节,按理说能表示160bit
我是按38位来打算的:
SELECT LOG(2,LPAD(9,38,9)) FROM DUAL;
LOG(2,LPAD(9,38,9))
-------------------
126.233268
实际上可以到40位,132 BIT:
select to_char(power(2,132)) from dual;
TO_CHAR(POWER(2,132))
----------------------------------------
5444517870735015415413993718908291383296
超过132就不行了:
select to_char(power(2,133)) from dual;
TO_CHAR(POWER(2,133))
----------------------------------------
1.0889035741470030830827987437816583E+40
我也写了个二进制的筛法,但是ORACLE对NUMBER型的计算太慢了,一百万内素数也要花4秒。 |