Java优化之输出十万以内的质数
(1)未经优化时所耗费的时间:
public class PrimeNumber {
public static void main(String[] args) {
long start = System.currentTimeMillis();
boolean flag = false;
for(int i = 2; i <= 100000; i++){
for(int j = 2; j < i; j++){
if(i % j == 0){
flag = true;
}
}
if(flag == false)
System.out.print(i+" ");
flag = false;
}
long end = System.currentTimeMillis();
System.out.println("\n"+(end - start));
}
}
其所耗费的时间为:27038ms
(2)优化一:内层循环的判断,当false已经为true的时候,即可跳出内层循环
public class PrimeNumber {
public static void main(String[] args) {
long start = System.currentTimeMillis();
boolean flag = false;
for(int i = 2; i <= 100000; i++){
for(int j = 2; j < i; j++){
if(i % j == 0){
flag = true;
break;
}
}
if(flag == false)
System.out.print(i+" ");
flag = false;
}
long end = System.currentTimeMillis();
System.out.println("\n"+(end - start));
}
}
其所耗费的时间为:2424ms
(3)优化二:内层循环只需循环到i的根号时,即可结束(注意包括i的根号)
public class PrimeNumber {
public static void main(String[] args) {
long start = System.currentTimeMillis();
boolean flag = false;
for(int i = 2; i <= 100000; i++){
for(int j = 2; j <= Math.sqrt(i); j++){
if(i % j == 0){
flag = true;
break;
}
}
if(flag == false)
System.out.print(i+" ");
flag = false;
}
long end = System.currentTimeMillis();
System.out.println("\n"+(end - start));
}
}
其所耗费的时间为:191ms
(4)也可以使用标签实现:
public class PrimeNumber2 {
public static void main(String[] args) {
long start = System.currentTimeMillis();
label1:
for(int i = 2; i <= 100000; i++){
for(int j = 2; j <= Math.sqrt(i); j++){
if(i % j == 0){
continue label1;
}
}
System.out.print(i+" ");
}
long end = System.currentTimeMillis();
System.out.println("\n"+(end - start));
}
}
其耗费时间为:195ms
Java优化之输出十万以内的质数的更多相关文章
- java练习题:输出100以内与7有关的数、百马百担、打分(去掉最高、最低分)、二分法查找数据
1.输出100以内与7有关的数 注: 这些数分为三类:(1)7的倍数,(2)个位数字是7的数,(3)十位数字是7的数 int i=1; System.out.println("输出100以内 ...
- PHP面试题之实现输出100以内的质数
最近求职时的其中一道面试题: 求100之内的质数 <? //求100以内质数 for ($i = 1; $i <= 100; $i++) { $k = 0; for ($j = 1; $j ...
- C++ —— 输出100以内的质数
代码如下: #include<iostream> #include<math.h> using namespace std; int main() { int i; for(i ...
- 【Python实践-7】输出100以内的所有素数
#输出100以内的所有素数,素数之间以一个空格区分(注意,最后一个数字之后不能有空格). i= l=[] : k= ,i): : k=k+ : l.append(i) i=i+ print(" ...
- 1.2输出100以内的素数&输出前100个素数。
输出100以内的素数只是一个嵌套,在1.1的基础上添加一层循环,只需要注意从2开始,并且变量需要换一个. #include<stdio.h> int main() { ; ; i < ...
- JAVA中集合输出的四种方式
在JAVA中Collection输出有四种方式,分别如下: 一) Iterator输出. 该方式适用于Collection的所有子类. public class Hello { public stat ...
- Java数字格式化输出时前面补0
Java数字格式化输出时前面补0 星期日 2014年11月30日| 分类: Java /** * 里数字转字符串前面自动补0的实现. * */ public class TestString ...
- Java自定义日志输出文件
Java自定义日志输出文件 日志的打印,在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个Appender的日志级别.打印形式和日志的输出路径 ...
- Java中直接输出一个类的对象
例如 package com.atguigu.java.fanshe; public class Person { String name; private int age; public Strin ...
随机推荐
- 【转载】通过JDBC对MySQL数据库的增删改查
通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...
- 欧洲杯 2016 高清直播 - 观看工具 UEFA-EURO-2016-Play.7z
OnlineTV-MPlayer-nocache.exe 占 CPU 内存 较少 OnlineTV-FFPlay.exe 可截取图像 UEFA-EURO-2016-Play-v5.7z UEFA-EU ...
- Java for LeetCode 233 Number of Digit One
Given an integer n, count the total number of digit 1 appearing in all non-negative integers less th ...
- Linux实时流量监控工具 - iftop
*本文转自ggjucheng的博客 介绍 iftop是一款实时流量监控工具,监控TCP/IP连接等,缺点就是无报表功能.必须以root身份才能运行. 实例 默认是监控第一块网卡的流量 iftop 监控 ...
- [转]安装和使用JD-Eclipse插件
JD-Core 是一个免费的库,从一个或多个“.class”文件中 重构Java源代码.JD-Core可以用来恢复丢失的源代码,并深究Java运行时类库.支持Java 5的功能:如注释,泛型或键入“枚 ...
- JSON 数据格式
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易 ...
- WCF服务与WCF数据服务的区别
问: Hi, I am newbie to wcf programming and a little bit confused between WCF Service and WCF Data Se ...
- 【leetcode】Flatten Binary Tree to Linked List (middle)
Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / \ 2 5 / \ \ 3 4 6 T ...
- ocx文件转换成C#程序引用的DLL
将ocx文件转换成C#程序引用的DLL文件的办法 将ocx文件转换成C#程序引用的DLL文件的办法,需要的朋友可以参考一下 1.打开VS2008或VS2010命令提示符(此例用VS2008) 将o ...
- php数据访问基础
建一个连接(造一个连接对象) $db = new MySqli("IP地址或者域名,若果是本地则用localhost","用户名","数据库密码&qu ...