要使用大数(100,000+)的Fermat Primality Test时需要使用模幂运算,需要进行一些非常大的计算.
当我乘以两个大数(例如:62574和62574)时,PHP似乎将结果转换为浮点数.获取模数值会返回奇怪的值.
$x = 62574 * 62574;
var_dump($x); // float(3915505476) ... correct
var_dump($x % 104659); // int(-72945) ... wtf.
Run Code Online (Sandbox Code Playgroud)
有没有办法让PHP正确执行这些计算?或者,是否有另一种方法可以找到适用于大数的模数值?
我试图使用'tempfile'模块来操作和创建文本文件.文件准备好后,我想将其保存到磁盘.我认为这就像使用'shutil.copy'一样简单.但是,我得到'权限被拒绝'IOError:
>>> import tempfile, shutil
>>> f = tempfile.TemporaryFile(mode ='w+t')
>>> f.write('foo')
>>> shutil.copy(f.name, 'bar.txt')
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
shutil.copy(f.name, 'bar.txt')
File "C:\Python25\lib\shutil.py", line 80, in copy
copyfile(src, dst)
File "C:\Python25\lib\shutil.py", line 46, in copyfile
fsrc = open(src, 'rb')
IOError: [Errno 13] Permission denied: 'c:\\docume~1\\me\\locals~1\\temp\\tmpvqq3go'
>>>
Run Code Online (Sandbox Code Playgroud)
这是不是在使用'tempfile'库时?有一个更好的方法吗?(也许我忽略了一些非常微不足道的事情)
我正在寻找相当于svn catgit.
是的,我知道这里提出了类似的问题.答案是使用git show rev:path.
但是,svn cat可以用于远程存储库.也就是说,我可以svn cat url@rev从远程存储库的指定版本获取文件,而无需获取整个存储库.我的理解是git show只适用于本地存储库.
我找到的解决方法是使用gitweb接口来获取blob.
当对非常大的数字进行计算时,整数数据类型(如double或int64)不足,可能需要一个单独的类来处理这么大的数字.
有谁关心提供一个有效的算法,如何最好地做到这一点?