2016 - 2024

感恩一路有你

素数判断最快方法及复杂度 为什么求素数要开根?

浏览量:3622 时间:2023-05-29 12:57:36 作者:采采

为什么求素数要开根?

这是为了提高程序的效率,用最少的计算量得到正确的结果。

例如,确定9973是一个质数。最差的程序是判断2~9972不可分;比较好的应该判断2~4986不可分;有了平方根,只要判断2~99不可分,就可以断定9973是素数。

主要作用是降低计算的复杂度。

请问质数的定义是什么大质数加密的原理是什么?

应该用概率算法来检验一个数是否是质数。由素数定理(素数定理

),可以估计出一定范围内素数的密度,也就是你随机找到一个数是素数的概率。此外,还需要一些算法来检验素数,以确定它是否真的是素数。

)。比如米勒

这样的素数测试在概率上表现不错(其实对于大整数来说,这个过程的主要时间复杂度应该是乘法的消耗)。

中文维基词条上有一些密钥生成的简要描述。RSA加密算法

现在java的执行速度和c 相比谁快?你怎么看?

理论上一样快,有时候cpp快,有时候java快。

请注意,我 我不是在说普遍荒谬的有神论Java一定比C "。如果你不 不知道什么 "有时 "意思是,请直接留下这个答案,因为你没有资格继续看下去。

我估计有人听了会不高兴。什么?java一定比cpp慢,因为java是用虚拟机运行的,虚拟机是c/cpp写的,所以可以断定Java一定比cpp慢!

然而,它不是,因为java不是一种脚本语言。再说一遍,java不是脚本语言!上面提到的思维显然是把java当成了脚本语言。虚拟机本质上还是提供虚拟硬件,有自己的处理器指令集。不然你觉得为了保密有必要再编一遍吗?另一个证明就是java真的可以直接在硬件上运行(如果有虚拟机,当然可以做出真机)。注意,它真的是直接在硬件上运行,而不是把一套用其他语言编写的运行环境和硬件集成在一起。之前也有过这样的芯片,可惜推出后没有市场,最终消失在历史中。不过这已经证明了java是基于硬件指令操作的根本性质而不是其他高级语言的翻译和操作。

你能为js或任何其他脚本语言建立一个真实的机器吗?

正是因为这个特性,java才能比C快,举个最容易理解的例子,C创建一个对象需要4条真实的cpu指令,而java只需要1条虚拟机cpu指令。那么,一条虚拟机cpu指令需要和四条真实的cpu指令一起运行吗?显然不是。

如果你看到这个,你仍然不 I don'我不相信。Java可以比cpp更快,甚至想在下面留言用各种已经解释过但是你还可以 我不明白。那我直接给你举个好例子。接下来,我们将使用cpp和java创建100万个功能完全相同的对象来测试耗时的执行情况。

测试环境是MacBook pro2016,jdk1.8.0-131,G自带系统4.2.1,clang是10.0.1(更适合编译未优化的代码),那么结果如何?

第一个出场的是C,测试代码如下。可以看出,它们是最基本的操作,即使是初学者也能轻松理解:。

那么操作的结果是什么呢?见下图。再说一次,这里用clang其实是给C加buff!

接下来,它 是java出现的时候了。同样的环境下,测试代码如下,可以说基本是C代码的翻版。第一次运行的结果已经显示在控制台中。当然,为了公平起见,我们也测试了几次...

这是第二个结果:

这是第三个结果:

现在,你还觉得C一定比java快吗?事实胜于雄辩,除非你是靠嘴编程的玩家。

java 素数 算法 硬件

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。