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