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