Java 循环嵌套问题三:100以内质数的输出以及优化(笔试题)
质数是只有一和它本身才能被除尽的一类数,输出100以内的质数本质还是循环嵌套
首先,外层循环遍历100以内的自然数,因为1不是质数,所以从2开始,内层循环从1开始到自己本身结束,每个数都被i除一次,这里我们反其道而行之,我们先定义一个布尔类型的变量isFlag赋值为true,如果在内层循环的时候 i 除以 j 的时候出现了i%j==0的情况也就是出现了除了 i 自己和1以外其他的约数,就给isFlag赋值false,相当于贴了一个标签,说明当此循环的i不是质数。然后我们在接下来的判断过程中,当isFlag为true时,在外层循环里输出i的值,这样就可以输出符合条件的质数.
代码如下
import java.util.Scanner;
public class zhishu {public static void main(String[] args) {long start=System.currentTimeMillis();for(int i=2;i<=100;i++) {boolean isFlag=true;for(int j=2;j<i;j++) {if(i%j==0) {isFlag=false;}}if(isFlag==true) {System.out.println(i);}}long end=System.currentTimeMillis();System.out.println("所花费的时间为:"+(end-start));}
}}
}
运行结果如下:
接下来是算法的优化:我们从内层循环入手,i%j==0的时候,将faluse 赋给Flag以后,说明这个数已经判断不是质数了,我们也没有判断下去的必要了,所以我们在其后加上break
代码如下:
public class zhishu1 {public static void main(String[] args) {long start=System.currentTimeMillis();for(int i=2;i<=10000;i++) {boolean isFlag=true;for(int j=2;j<i;j++) {if(i%j==0) {isFlag=false;break;}}if(isFlag==true) {System.out.println(i);}}long end=System.currentTimeMillis();System.out.println("所花费的时间为:"+(end-start));}
}
100的对比不明显,我们将数量增加到10000
结果如下
可以很明显的看到时间减少了很多
我们还可以再优化,也就是我们没必要从1到10000遍历,我们可以从1到它的平方根就可以(这里涉及数学知识,小郭不太行,等我学会了回来解释)
代码如下:
public class zhishu2 {public static void main(String[] args) {long start=System.currentTimeMillis();for(int i=2;i<=10000;i++) {boolean isFlag=true;for(int j=2;j<=Math.sqrt(i);j++) {if(i%j==0) {isFlag=false;}}if(isFlag==true) {System.out.println(i);}}long end=System.currentTimeMillis();System.out.println("所花费的时间为:"+(end-start));}
}
结果如下
所用的时间更少了
在以后的编程中会有很多特别大的数,为了使程序能够平稳运行,我们要尽可能的进行优化.
Java 循环嵌套问题三:100以内质数的输出以及优化(笔试题)相关推荐
- 采用数组实现斐波那契数列的计算、foreach循环的使用、100以内质数的判断
想要实现斐波那契数列的计算,我们首先得了解斐波那契数列的定义及其原理: 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契以兔子繁殖为例子而引入,故又称 ...
- 1000以内完数、100以内质数 java
1000以内完数: 一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3. (因子除去这个数本身的其他约数) //方法一:利用根号i作为范围for (int i ...
- java求100以内质数
质数:只能被1和它本身整除的数 求:100以内质数 思路:利用标记思想 public class test4 {public static void main(String[] args) {for ...
- 判断三角形java代码_小猿圈Java循环嵌套语法的使用介绍
Java是一直被程序员使用的程序之一,而且应用也是最广泛的一个,很多应用中都会用得到,小猿圈java讲师就为你介绍一下Java循环嵌套语法的使用介绍,希望对你有所帮助. 嵌套循环是指在一个循环语句的循 ...
- python求100以内质数以及合数
质数有哪些?如何用python求质数?合数有哪些?这一次,我们做一个100以内质数生成器吧! z=[]#质数列表 h=[]#合数列表 for i in range(2,100+1):#循环2-100a ...
- java while语句打印三角形_小猿圈Java循环嵌套语法的使用介绍
Java是一直被程序员使用的程序之一,而且应用也是最广泛的一个,很多应用中都会用得到,小猿圈java讲师就为你介绍一下Java循环嵌套语法的使用介绍,希望对你有所帮助. 嵌套循环是指在一个循环语句的循 ...
- 一百以内质数的输出。(java)
方法1: public class 一百以内质数的输出 {// 100以内的所有的质数输出// 只能被1和本省整除的自然数// 从2开始,到这个数结束为止,都不能被这个数整除的public stati ...
- 编写一个找出100以内质数的程序
质数即除了1和本身而没有别的约数:而合数刚好与质数相反. 用javascript写出找出100以内质数的程序如下: 用浏览器运行后打开,可以在控制台看到运行结果如下: 当然,如果我们想找100以内的合 ...
- 实现100以内的素数输出(Python与C++对比)
今天从链接http://www.2cto.com/kf/201302/187699.html中看到了Python实现100以内的素数输出的算法,颇受感触.尤其是被其中的Python的列表生成器的使用方 ...
最新文章
- Openoffice添加页脚页码页数页眉
- 老域名优化出新招,三点技巧来相助
- Servlet3.0新特性
- 【千字分析】剑指 Offer 46. 把数字翻译成字符串
- 讲讲volatile的作用
- .NET Core 中导入导出Excel
- 7种常用的数据标注工具
- wav音频文件转为c语言代码程序 1.0 简体绿色版,WAV音频单声道提取工具下载
- PR短视频特效转场 快速画面分割视频转场过渡PR转场模板
- mysql 建表 game_RPG游戏数据库设计
- sysfader iexplore 应用程序错误问题解决方法.
- matlab control包,免费试用Instrument Control Toolbox
- Firefox的下载经管器:FlashGot v1.0 Final发布
- Lua 源码学习笔记(2)字符串
- PyTorch(二次元头像--GAN实战)
- 解决Flash Helper Service老是弹出流氓广告
- 《老路用得上的商学课》21-30学习笔记
- JAVA实体Do-Dto转换类 Converter
- css 动画如何保持最终的状态
- 点云的基本特征和描述
热门文章
- 阿里云短信验证码注册及使用
- Android:看完这篇文章,我终于理解了漫游是怎么回事
- 作为品牌方你在采媒宝找知乎MCN机构做知乎推广?那么本文将对你有帮助了
- java http post数组参数_java - 适用于Java / Android的HTTP POST数组参数 - 堆栈内存溢出...
- Springboot整合Mybatis框架
- 关于 Adobe Mac版 总是提示需要访问钥匙串中的密钥解决方法
- “一斗穷,二斗富”是什么意思,中科院发现关于指纹的基因奥秘
- Elasticsearch Term Vectors(词频统计)
- Android开发——创建新的activity
- Sublime Text 相关教程(转)