好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

java如何判断一个数是否是素数(质数)

java判断一个数是否是素数(质数)

质数(prime number)又称素数,有无限个

质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

import java.util.Scanner;

public class TestWork {

  public static void main(String[] args) {

   boolean isPrime = true ;

   Scanner sc = new Scanner(System.in);

   System.out.println( "请输入一个正整数" );

   int num = sc.nextInt();

   if (num > 0 ) {

    int k = ( int ) Math.sqrt(num); //k为num的正平方根,取整数

    for ( int i = 2 ; i <= k; i++) {

     if (num % i == 0 ) {

      isPrime = false ; //不是素数

      break ;

     }

    }

   }

   if (isPrime) {

    System.out.println(num + "是素数" );

   } else {

    System.out.println(num + "不是素数" );

   }

  }

}

输出1~1000之间的素数

思路

偶数肯定不是素数,所以递增的时候可以以奇数的形式递增,再在奇数中去掉非质数的数。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

public class TestWork {

  public static void main(String[] args) {

   boolean isPrime = true ;

   int PrimeCount= 0 ;

   for ( int i = 3 ; i <= 1000 ; i+= 2 ) {

    int k = ( int ) Math.sqrt(i); //k为num的正平方根,取整数

    isPrime = true ;

    for ( int j = 2 ; j <= k; j++) {

     if (i % j == 0 ) {

      isPrime = false ; //不是素数

      break ;

     }

    }

    if (isPrime) {

     PrimeCount++;

     System.out.print(i+ "\t" );

     if (PrimeCount% 5 == 0 ){

      System.out.println();

     }

    }

   }

  }

}

java 求1-100之间的质数

质数定义:

质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。

如:2,3,5,7,11…

1、质数实例一

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

//1-100之间的质数--------1

public class PrimeNumber {

  public static void main(String[] args) {

   for ( int i= 2 ;i<= 100 ;i++) {

    boolean flag= true ;

    for ( int j= 2 ;j<i;j++) {

     if (i%j == 0 ) {

      flag= false ;

      break ;    

     }       

    }

    if (flag) {

     System.out.println( "质数:i= " +i);  

    }

   } 

  }

}

2、质数实例二

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

//1-100之间的质数--------2

public class PrimeNumber {

  public static void main(String[] args) {

         for ( int i= 2 ;i<= 100 ;i++) {  

             for ( int j= 2 ;j<=i;j++) {

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

                     break ;    

                 }

                 if (j==i) {

                     System.out.println( "质数:i= " +i);    

                 }   

             }

         }

     }

}

3、质数实例三

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

//1-100之间的质数--------3

public class PrimeNumber {

  public static void main(String[] args) {

         for ( int i= 2 ;i<= 100 ;i++) {  

             int j= 2 ;

             while (i%j != 0 ) {

                 j++;    

             }

             if (j==i) {

                 System.out.println( "质数:i= " +i);        

             }

         }

     }

}

4、质数实例四

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

//1-100之间的质数--------4

public class PrimeNumber {

  public static void main(String[] args) {

         for ( int i= 2 ;i<= 100 ;i++) {

             int j= 2 ;

             for (;j<=i/ 2 ;j++) {

                 if (i%j== 0 ) {

                     break ;    

                 }  

             }

             if (j==i/ 2 + 1 ) {

                 System.out.println( "质数:i= " +i);                  

             }

         }

  }

}

5、质数实例五

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

public class PrimeNumber {

  public static void main(String[] args) {

   int count= 0 ;

   for ( int i= 2 ;i<= 100 ;i++) {

    int j= 2 ;

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

     if (i%j== 0 ) {

      break ;    

     }  

    }

    if (j==( int )Math.sqrt(i)+ 1 ) {

     System.out.println( "质数:i= " +i);

     count++;    

    }

   }

   System.out.println( "质数个数:count= " +count);

     }

}

6、质数实例六

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

public class PrimeNumber {

  public static void main(String[] args) {

int count1 = 0 , count2 = 0 ;

   for ( int i = 2 ; i <= 100 ; i++) {  

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

     if (i % j != 0 ) {

      //不能被整除累计一次

      count1++;

     }

    }

    // 转为int的类型

    int num2 = ( int ) Math.sqrt(i);

    //如果累计次数num2 - 1个数相等则为素数

    if (count1 == (num2 - 1 ) {

     System.out.println( "质数: " + i);

     count2++;

    }

    //找到素数后count1再初始化为0

    count1 = 0 ;

   }

   // 统计素数个数

   System.out.println( "质数个数:count2= " +count2);

  }

}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://blog.csdn.net/huanyinghanlang/article/details/78206603

查看更多关于java如何判断一个数是否是素数(质数)的详细内容...

  阅读:15次