服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - java如何判断一个数是否是素数(质数)

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

2021-12-18 14:43幻影寒狼 Java教程

这篇文章主要介绍了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教程Java8中Stream使用的一个注意事项

    Java8中Stream使用的一个注意事项

    最近在工作中发现了对于集合操作转换的神器,java8新特性 stream,但在使用中遇到了一个非常重要的注意点,所以这篇文章主要给大家介绍了关于Java8中S...

    阿杜7482021-02-04
  • Java教程20个非常实用的Java程序代码片段

    20个非常实用的Java程序代码片段

    这篇文章主要为大家分享了20个非常实用的Java程序片段,对java开发项目有所帮助,感兴趣的小伙伴们可以参考一下 ...

    lijiao5352020-04-06
  • Java教程升级IDEA后Lombok不能使用的解决方法

    升级IDEA后Lombok不能使用的解决方法

    最近看到提示IDEA提示升级,寻思已经有好久没有升过级了。升级完毕重启之后,突然发现好多错误,本文就来介绍一下如何解决,感兴趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程xml与Java对象的转换详解

    xml与Java对象的转换详解

    这篇文章主要介绍了xml与Java对象的转换详解的相关资料,需要的朋友可以参考下...

    Java教程网2942020-09-17
  • Java教程Java实现抢红包功能

    Java实现抢红包功能

    这篇文章主要为大家详细介绍了Java实现抢红包功能,采用多线程模拟多人同时抢红包,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java BufferWriter写文件写不进去或缺失数据的解决

    Java BufferWriter写文件写不进去或缺失数据的解决

    这篇文章主要介绍了Java BufferWriter写文件写不进去或缺失数据的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望...

    spcoder14552021-10-18
  • Java教程小米推送Java代码

    小米推送Java代码

    今天小编就为大家分享一篇关于小米推送Java代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    富贵稳中求8032021-07-12
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    这篇文章主要介绍了Java使用SAX解析xml的示例,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下...

    大行者10067412021-08-30