对于一个long型的数,检验他是否为素数需要多少时间一个一个除的那种 除到根号N比如我求4115461151422316879L就会无响应了是我算法上有问题吗public static boolean isAPrime(long n) { boolean yn = true; Syste
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/17 20:38:28
对于一个long型的数,检验他是否为素数需要多少时间一个一个除的那种 除到根号N比如我求4115461151422316879L就会无响应了是我算法上有问题吗public static boolean isAPrime(long n) { boolean yn = true; Syste
对于一个long型的数,检验他是否为素数需要多少时间
一个一个除的那种 除到根号N
比如我求4115461151422316879L就会无响应了
是我算法上有问题吗
public static boolean isAPrime(long n) {
boolean yn = true;
System.out.println(" (long)Math.sqrt(n)的值是" +(long) Math.sqrt(n));
check: for (long i = 2; i
对于一个long型的数,检验他是否为素数需要多少时间一个一个除的那种 除到根号N比如我求4115461151422316879L就会无响应了是我算法上有问题吗public static boolean isAPrime(long n) { boolean yn = true; Syste
Java里面long型整数是64位的,最大的数字是2^64,试除到根号N最多需要2^32次,2^32=4294967296约为43亿次~现在cpu一般能达到4GHZ即每秒40亿次的运算速度,所以1秒钟左右能检验出来!如果你说的不是Java里面的数据类型,那就得另外计算时间了!
你给出的那个数是一素数,估计可能是计算的时间太长了,系统把他给锁死了!建议你别用i++的方法来算,可以先剔除所有的偶数,还有,除2,3外所有的素数都是6n+1或6n-1的形式,定义一个好的素数筛子是可以把传统判断素数方法的效率提高三倍多的!