java 判断素数

java 判断素数,第1张

j = 2开始就正确了

public class SS{

public static void main(String[] args){

int i=(int)(Math.random()*50+50)

int j

System.out.println("这个随机数大小为:"+i)

for(j=2j<=ij++)

{if(i%j==0)

break}

if(j==i)

System.out.println(i+"是素数")

}

}

包括自己是正确的,这题包括自己才是楼主算法的精髓。楼主的算法是从1(实际应该是2开始)寻找能被i整除的数,如果能被i整除,且这个数字等于i本身了,也就是说从2~i之间只有i这个值能被i整除,那么这个数字就是质数。

所以除了上面的j = 2修改之外,楼主算法的另外一个修改方案

public class SS{

public static void main(String[] args){

int i=(int)(Math.random()*50+50)

int j

System.out.println("这个随机数大小为:"+i)

for(j=1j<=ij++)

{if(i%j==0 &&j != 1)

break}

if(j==i)

System.out.println(i+"是素数")

}

}

这个也是可以的

当然最快的还是

public class SS {

public static void main(String[] args) {

int i = (int) (Math.random() * 50 + 50)

int j

System.out.println(这个随机数大小为:"+i)

boolean isPrime = true

for(j = 2j <Math.sqrt(i)j++){

if(i % j == 0){

isPrime = false

break

}

}

if(isPrime){

System.out.println(i+"是素数")

}

}

}

public class panduansushu {

public static void main(String args[]) {

int x, y, j

Scanner i = new Scanner(System.in)

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

y = i.nextInt()

j = (int) y / 2

for (x = 2x <= jx++) {

if (y % x == 0) {

System.out.println("此数不为素数")

break

}

}

if (x >j) {

System.out.println("此数为素数")

}

}

}

import java.util.Scanner  

  

//质数又称素数,是指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数  

public class PrimeNumber {  

  

    public static void main(String[] args) {  

  

        Scanner scan = new Scanner(System.in)// 扫描器,接收控制台输入信息  

  

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

  

        try {  

            int num = scan.nextInt()// 取出控制台输入的信息  

            if (isPrime(num)) {// 调用isPrime()方法  

  

                System.out.println(num + "是素数!")// 若isPrime()方法返回true,输出是素数  

  

            } else {  

  

                System.out.println(num + "不是素数!")// 若isPrime()方法返回false,输出不是素数  

            }  

        } catch (Exception e) {  

            System.out.println("请输入整数")// 捕捉异常,若输入的不是整数,输出异常  

        }  

    }  

  

    /** 

     * <pre> 

     * 用于判断一个数是否为素数,若为素数,返回true,否则返回false 

     * </pre> 

     *  

     * @param a 

     *            输入的值 

     * @return true、false 

     */  

    public static boolean isPrime(int a) {  

  

        boolean flag = true  

  

        if (a < 2) {// 素数不小于2  

            return false  

        } else {  

  

            for (int i = 2 i <= Math.sqrt(a) i++) {  

  

                if (a % i == 0) {// 若能被整除,则说明不是素数,返回false  

  

                    flag = false  

                    break// 跳出循环  

                }  

            }  

        }  

        return flag  

    }  

}

文章来自秋叶为何落的博客分享


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8155289.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存