包含java质数sqrt的词条

博主:adminadmin 2022-12-04 16:42:07 84

本篇文章给大家谈谈java质数sqrt,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用java语言判断一个数是不是质数?

下面是我用JavaScript写的素数函数,供参考,大同小异

PrimeA=function(n,nth){/* 小于n的素数表

参数nth 指定返回第n个素数

*/

//var t0=Time.now5();

/*

方法1:利用isPrime 废弃!

var t=[];

for(var i=2;in+1;i++){

if(isPrime(i)){

t.push(i)

}

}

consolelog('方法1:耗时:'+(+Time.now5()-(+t0)));

return t

*/

//方法2:利用筛法

var p=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59];//自己往后补充,越多越好,可以加快检测小素数的效率

if(nth  n=669){

return p[n-1]

}

if(!nth  n2){

return []

}

if(n=5000  !nth){

for(var i=0;i100;i++){

var j=p.indexOf(n-i);

if(j-1){return p.slice(0,j+1)};

}

return p

}

var m=nth?Math.ceil(n*Math.log(n)+1000):n; //pn ∼ nln(n)

// for(var i=5001;i=m;i+=2){

var i=5001;

while(i){

var t=Math.floor(Math.sqrt(i)), pl=p.length;

for(var j=0;jpl;j++){//p.length

if(i%p[j] == 0){

break

}else if(p[j+1]t){

p.push(i);

if(nth  pl==n-1){

return i

}

break;

}

}

if(!nth  i=n-1){

return p

}

i+=2;

}

return p

//方法3:Wilson测试

}

用java语言写一个判断一个整数是否为质数的程序(要求利用三种方法逐步优化实现)

我写了几种方法,并逐步优化,并且对每一种方法进行了1000000次的调用测试每种方法的速度,仅供参考:

import java.math.BigInteger;

public class Test_04 {

    /**

     * 最笨重的一种方法,用该整数分别除以比它小的数,看是否能被整除

     */

    public boolean isPrimeNum_1(int num) {

        // 识别小于2的数

        if (num  2) {

            return false;

        }

        for (int i = 2; i  num; i++) {

            if (num % i == 0) {

                return false;

            }

        }

        return true;

    }

    /**

     * 优化第一种方法br

     * 1、偶数不可能是质数br

     * 2、对于大于2的数,如果一个数a大于数b的一半,那么b不可能被a整除

     */

    public boolean isPrimeNum_2(int num) {

        // 2特殊处理

        if (num == 2) {

            return true;

        }

        // 识别小于2的数和偶数

        if (num  2 || num % 2 == 0) {

            return false;

        }

        int max = num / 2;

        for (int i = 3; i  max; i += 2) {

            if (num % i == 0) {

                return false;

            }

        }

        return true;

    }

    /**

     * 在第二种方法上再次优化,利用数字的性质:br

     * 一个数不是素数就是合数,那么一定可以由两个自然数相乘得到,其中一个大于或等于它的平方根,br

     * 一个小于或等于它的平方根,并且成对出现。br

     * 这样就可以把计算量大幅度减少

     */

    public boolean isPrimeNum_3(int num) {

        if (num == 2) {

            return true;// 2特殊处理

        }

        if (num  2 || num % 2 == 0) {

            return false;// 识别小于2的数和偶数

        }

        double sqrt = Math.sqrt(num);

        for (int i = 3; i = sqrt; i += 2) {

            if (num % i == 0) {

                return false;

            }

        }

        return true;

    }

    /**

     * Java中的BigInteger中已经写好了一个判断是否为质数的方法,直接用就可以了

     */

    public boolean isPrimeNum_4(int num) {

        BigInteger integer = BigInteger.valueOf(num);

        return integer.isProbablePrime(1);

    }

    public static void main(String[] args) {

        Test_04 test_04 = new Test_04();

        int num = 991;

        System.out.println(test_04.isPrimeNum_1(num));

        long startTime = System.currentTimeMillis();

        for (int i = 0; i  1000000; i++) {

            test_04.isPrimeNum_1(num);

        }

        long endTime = System.currentTimeMillis();

        System.out.println("第一种方法运行时间:" + (endTime - startTime) + "ms");

        System.out.println(test_04.isPrimeNum_2(num));

        startTime = System.currentTimeMillis();

        for (int i = 0; i  1000000; i++) {

            test_04.isPrimeNum_2(num);

        }

        endTime = System.currentTimeMillis();

        System.out.println("第二种方法运行时间:" + (endTime - startTime) + "ms");

        System.out.println(test_04.isPrimeNum_3(num));

        startTime = System.currentTimeMillis();

        for (int i = 0; i  1000000; i++) {

            test_04.isPrimeNum_3(num);

        }

        endTime = System.currentTimeMillis();

        System.out.println("第三种方法运行时间:" + (endTime - startTime) + "ms");

        System.out.println(test_04.isPrimeNum_4(num));

        startTime = System.currentTimeMillis();

        for (int i = 0; i  1000000; i++) {

            test_04.isPrimeNum_4(num);

        }

        endTime = System.currentTimeMillis();

        System.out.println("第四种方法运行时间:" + (endTime - startTime) + "ms");

    }

}

输出结果:

true

第一种方法运行时间:2732ms

true

第二种方法运行时间:671ms

true

第三种方法运行时间:68ms

true

第四种方法运行时间:1064ms

用java编程实现判断一个整数是否为质数

import java.io.*;

import java.util.Scanner;

public class Prime {

public static void main(String args[]) {

System.out.println("请输入一个数字:");

Scanner sc = new Scanner(System.in);

int num = sc.nextInt();

int count = 0;

if (isPrimes(num)) {

System.out.println(num + "是一个质数!");

}

else {

System.out.println(num + "不是一个质数!");

}

System.out.println(num+"后的3个质数为:");

num = num+1;

loop:while(count3)

{

//num = num+1;

if(isPrimes(num))

{

System.out.println(num);

count++;

num++;

continue loop;

}

else

{

num++;

continue loop;

}

}

}

public static boolean isPrimes(int n) {

for (int i = 2; i = Math.sqrt(n); i++) {

if (n % i == 0) {

return false;

}

}

return true;

}

}

用java如何写代码去判断质数和合数

首先介绍下:质数是除了本身和1以外,没有质因数,就是没有数能够整除之;合数是除了本身和1以外还有第三个数能整除之。

具体示例代码如下:

public class Demo2 {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        System.out.print("请输入一个数:");

        int num = scan.nextInt();

        int index = 0;//使用一个数来标记是质数还是合数

        for (int i = 2; i  num; i++) {

            if (num % i == 0) {

                index++;

            }

        }

        if (index == 0) {//index等于0表示质数

            System.out.println("这是个质数");

        }

        else {//index大于0表示合数

            System.out.println("这是个合数");

        }

    }

}

需要注意的是:1不算质数也不算合数。

用JAVA语言求质数

程序如下,希望有所帮助

public class Prime {

//判断质数

public static void isPrime(int num) {

int j = 2;

for (; j = Math.sqrt(num); j++) {

if (num % j == 0) {

System.err.println(num + "不是质数!");

return;

}

}

if (j Math.sqrt(num)) {

System.err.println(num + "是质数!");

return;

}

System.err.println(num + "不是质数!");

return;

}

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.err.println("请输入数字:");

int num = sc.nextInt();//接收输入

isPrime(num);//判断是否为质数

}

}

java质数sqrt的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、java质数sqrt的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-04,除非注明,否则均为首码项目网原创文章,转载请注明出处。