当前位置: 首页 > news >正文

【Java】—— 使用Java编写程序找出100以内的质数

质数的定义与性质

        质数是指只能被1和自身整除的正整数。根据定义,质数必须大于1。例如,2、3、5、7、11等都是质数。质数的性质如下:

  • 每个大于1的自然数要么是质数,要么可以分解成几个质数的乘积。
  • 除了2和3之外,所有的质数都是奇数。
  • 质数的个数是有限的,并且随着数字的增加而逐渐增多。
  • 质数分布不均匀,相邻的两个质数之间的差可能很大。

        质数是大于1的自然数,除了1和它本身以外不再有其他因数。在计算机编程中,我们可以通过循环和条件判断来找出一定范围内的所有质数。下面是一个用Java编写的程序,用于找出100以内的所有质数。

public class PrimeNumberTest {public static void main(String[] args) {// 遍历2到100之间的所有整数for (int i = 2; i < 101; i++) {boolean isFlag = true; // 初始化标志位为true,表示当前数字i可能是质数// 检查i是否能被2到sqrt(i)之间的任何整数整除for (int j = 2; j <= Math.sqrt(i); j++) {if (i % j == 0) { // 如果i能被j整除,说明i不是质数isFlag = false; // 将标志位设置为falsebreak; // 跳出内层循环,无需继续检查后续的j}}// 如果标志位仍为true,说明i不能被2到sqrt(i)之间的任何整数整除,因此i是质数if (isFlag) {System.out.println(i); // 输出质数}}}
}

代码解析

  1. public class PrimeNumberTest:定义一个名为PrimeNumberTest的公共类。
  2. public static void main(String[] args):主方法,程序的入口点。
  3. for (int i = 2; i < 101; i++):外层循环,从2开始遍历到100(包括100)。
  4. boolean isFlag = true:初始化一个布尔型变量isFlag,用于标记当前数字i是否为质数。初始值设为true,假设它是质数。
  5. for (int j = 2; j <= Math.sqrt(i); j++):内层循环,从2开始遍历到i的平方根(包括平方根)。这里使用了数学上的一个优化技巧,只需要检查到平方根即可,因为如果i有一个因子大于它的平方根,那么必定存在另一个因子小于等于它的平方根。
  6. if (i % j == 0):判断i是否能被j整除。如果能整除,说明i不是质数,将标志位isFlag设置为false
  7. break:一旦发现i可以被j整除,就没有必要继续检查更大的j,因此可以提前结束内层循环。
  8. if (isFlag):如果标志位isFlag仍然为true,说明i不能被2到它的平方根之间的任何整数整除,因此i是质数。
  9. System.out.println(i):输出质数。

运行此程序后,控制台将输出100以内的所有质数。

        通过编写这个简单的程序,我们可以快速地找到一定范围内的所有质数。这对于数学研究和密码学等领域有着重要的应用价值。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 理解类方法和静态方法:Python 中的高级函数
  • Nginx负载均衡调度状态
  • 哇哦--一起学习接口叭
  • XSS总结知识点+例题实操
  • 探索 HarmonyOS 的层叠布局:灵活的 Stack 容器
  • Vmware WorkStations 17 ,centos 安装 vmware tools
  • FFmpeg的入门实践系列一
  • 序列建模之循环和递归网络 - 渗漏单元和其他多时间尺度的策略篇
  • 帆软报表设计器函数相关问题
  • OLED整体刷新到结合switch刷新方式演变
  • Swin-Transformer论文阅读
  • 打印空心正方形(c语言)
  • 8.20
  • 【人工智能】Transformers之Pipeline(十一):零样本图片分类(zero-shot-image-classification)
  • SpringSecurity6
  • Android Studio:GIT提交项目到远程仓库
  • Git的一些常用操作
  • java概述
  • leetcode46 Permutation 排列组合
  • Mac转Windows的拯救指南
  • Python实现BT种子转化为磁力链接【实战】
  • React16时代,该用什么姿势写 React ?
  • spring cloud gateway 源码解析(4)跨域问题处理
  • TypeScript迭代器
  • VUE es6技巧写法(持续更新中~~~)
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 前端面试之闭包
  • 使用API自动生成工具优化前端工作流
  • 数组的操作
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • Android开发者必备:推荐一款助力开发的开源APP
  • (07)Hive——窗口函数详解
  • (1)SpringCloud 整合Python
  • (javascript)再说document.body.scrollTop的使用问题
  • (JS基础)String 类型
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二)windows配置JDK环境
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm码农论坛 毕业设计 231126
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (五)activiti-modeler 编辑器初步优化
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转载)从 Java 代码到 Java 堆
  • (转载)虚函数剖析
  • .htaccess配置常用技巧
  • .NET Core 项目指定SDK版本
  • .net 获取url的方法
  • .NET 使用配置文件
  • [ C++ ] STL---stack与queue
  • [ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)
  • [20181219]script使用小技巧.txt
  • [8] CUDA之向量点乘和矩阵乘法
  • [AutoSar]工程中的cpuload陷阱(三)测试