判断素数(java)

1.

在最基础的逐个遍历上进行改进

思路:先去掉所有偶数以及1;
再进行遍历,但遍历的时候的步长为2,因为去掉偶数之后就没有必要再次判断偶数了,可以节省一半时间;

package a;import java.util.Scanner;public class Sushu1 {public static void main(String[] args){Scanner in = new Scanner(System.in);int x=in.nextInt();boolean isPrime=true;if(x==1||x%2==0&&x!=2)//若输入的数是1,或是除2以外的2的倍数,则先直接排除{isPrime=false;}else{for(int i=3;i<Math.sqrt(x);i+=2)//因为前面已经剔除掉了2的倍数,所以直接每次+2进行遍历,则可以大大节省时间{if(x%i==0){isPrime=false;break;}}}if(isPrime){System.out.println("是素数");}else{System.out.println("不是素数");}}
}

2.

输出前50(可更改)个素数
利用数组
思路
我们将2,放入数组的第一个
然后从3进行遍历,每遍历一个数都要以此取余所有小于它的素数
若能被整除,则退到最外层的for,进行for的下一轮
最后利用for循环输出(这里利用了for-each进行遍历输出)

package a;import java.util.Scanner;public class Sushu2 {//输出前50个素数(利用数组)public static void main(String[] args){Scanner in = new Scanner(System.in);int[] primes = new int[50];primes[0]=2;int cnt=1;OUT:for(int x=3;cnt<50;x++){for(int i=0;i<cnt;i++){if(x%primes[i]==0)//每遍历一个数,都要以此取余所有小于它的素数{continue OUT;//若能被整除,则退到最外层的for,进行for的下一轮}}primes[cnt]=x;cnt++;}for(int k:primes)//利用了for-each进行遍历输出{System.out.print(k+" ");}}
}

3.

输入一个数,求出这个数以内的所有素数
思路:构造素数表来进行判断(利用数组)
构建一个布尔类型的数组,用来判断该数组下标所代表的数是否为素数。
1.先利用for循环将所有数初始为true
2.从2(最小的素数)开始,因为2为true,所以通过for循环将所有小于我们所输入的数的2的倍数全部设为false,遍历下一个数:3,因为3为true,所以重复上面的操作…
3.最后输出类型是true的数字(下标)
注意:最后输出的时候从2开始输出,因为需要排除0和1

package a;import java.util.Scanner;public class Sushu3 {//构造素数表来判断public static void main(String[] args){Scanner in=new Scanner(System.in);int x= in.nextInt();//输入一个数,求出这个数以内的所有素数;boolean[] isPrime=new boolean[x];for (int i=0;i< isPrime.length;i++){isPrime[i]=true;}for (int j=2;j< isPrime.length;j++){if(isPrime[j]){for(int a=2;a*j<x;a++)//每个素数的倍数都标记为不是素数false;{isPrime[a*j]=false;}}}for (int y=2;y<x;y++)//因为0,1,不是素数,所以直接从2开始遍历;{if(isPrime[y]){System.out.print(y+" ");}}}}

结尾

希望对大家有帮助!!!
有问题可在下面留言,谢谢…

判断素数三种不同的方法(java)相关推荐

  1. 判断素数三种方法(转自阿飞__)

    一.概念介绍 大家中学都学过,就不过多介绍了,大致提两点: 1.质数又称素数.一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数:否则称为合数. 2.0和1既不是质数也不是合数,最 ...

  2. python if多条件并列判断的三种方法

    python if多条件并列判断的三种方法 如果使用python的if进行多个条件表达式的判断呢?下面介绍三种方法: 使用and或or来连接多个条件表达式,比如条件1 and 条件2 and条件3等等 ...

  3. Python实现二叉树的三种深度遍历方法!

    python代码实现了二叉树,这次将会实现二叉树的几种遍历方法,来更好的解析二叉树的结构特点.分别是一种广度遍历,和三种深度遍历方法:先序遍历,中序遍历,后序遍历.下面是代码实现: 1.先序遍历 遍历 ...

  4. 常用的分隔符有哪三种_掌握这三种调漂方法,你想怎么钓就怎么钓,再也不用求人...

    调漂对于刚学钓鱼的钓友来说是一件非常头痛的事情,每次钓鱼大部分时间都浪费在调漂上,总是感觉调不好,不是灵了就是钝了!那么问题到底出在哪呢?今天就和大家分享三种针对悬坠钓的调漂方法,看懂弄明白了,再也不 ...

  5. OpenCV函数应用:基于二值图像的三种孔洞填充方法记录(附python,C++代码)

    系列文章目录 函数系列: OpenCV函数简记_第一章数字图像的基本概念(邻域,连通,色彩空间) OpenCV函数简记_第二章数字图像的基本操作(图像读写,图像像素获取,图像ROI获取,图像混合,图形 ...

  6. Unity三种物体溶解方法

    Unity三种物体溶解方法 @[TOC](Unity三种物体溶解方法 效果展示 1. 利用Noise纹理进行溶解 shader要点 shader代码 2. 屏幕空间棋盘格 shader要点 shade ...

  7. BaiduMap---百度地图官方Demo之路径规划功能(介绍公交,驾车和步行三种线路规划方法和自设路线方法)

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  8. c# 整数除法取整_c# 三种取整方法 向上取整 向下取整 四舍五入

    c# 三种取整方法 向上取整 向下取整 四舍五入 Math.Round:四舍六入五取整 Math.Ceiling:向上取整,只要有小数都加1 Math.Floor:向下取整,总是舍去小数 public ...

  9. 三种引流方法案例分析

    第3课课程笔记 课程主题:三种引流方法&案例分析 课程题纲: 第一节:58同城引流方法详解(图文并茂) :宠物引流的第二种方法(资料收集与分享) :第三种最高端的玩法(让客户百分百信任你) 正 ...

最新文章

  1. 解决Layui的switch样式显示问题
  2. Shell函数详解(函数定义、函数调用)
  3. 为啥led灯用一年后暗了很多_嫌原车的卤素“蜡烛灯”太暗,想换掉,该选氙气灯还是LED灯?...
  4. mongodb数据文件结构——record是内嵌BSON的双向链表,多个record或索引组成extent...
  5. MySQL索引知识总结
  6. unity3d常用组件及分析
  7. Win10重装系统后的lockdir解密失败
  8. 实测 ? 2019 史上最全 28个国外国内免费虚拟手机号平台
  9. 线性表之带头双向循环链表
  10. 远程升级单片机程序设计思路
  11. 敏 感 信 息 扫 描 工 具 使 用 对 比
  12. 微信小程序实战之 goods(订餐页)
  13. PS 金属质感文字制作
  14. 安卓依赖包关系:support->Androidx->Jetpack
  15. Trajectory following with MAVROS OFFBOARD on Raspberry Pi
  16. 老中医给程序员的养生指北|开奖啦
  17. A. Integer Points
  18. 墙裂推荐--几个Jupyter Notebook 超实用插件(一)
  19. mysql语句中in的个数没有限制,但是整段sql语句的长度有限制(客户端发送)
  20. Protel和Altium是什么关系?

热门文章

  1. 单片机C语言实验报告总结,C语言实训心得体会
  2. yolo学习之各版本网络结构
  3. 易灵思FPGA-项目设计指南一
  4. 西门子1214 PID/通信模板 西门子PLC 1214和多台G120西门子变频器Modbud RTU通讯
  5. 电商平台分账功能如何实现?
  6. 中国休闲食品行业发展现状及前景分析,市场集中度低「图」
  7. awk分析话单列子 tcp连接失败率,及失败连接的topN
  8. 捷联惯导算法(二)位置更新算法的理解
  9. ubuntu20.04下安装网易云音乐,打开网易云音乐出现无法连接网络,播放不了音乐,不知道什么原因?????
  10. 邮件基本常识普及(to/cc/bcc)