/*
输出两个整数范围内的所有素数并且统计个数和所使用的时间
思路:
从2开始,到一个数-1结束,都不能被这个数本身除尽,则是素数;
可以用 isFlag表示是否被除尽,一旦被除尽,就break终止该循环;(优化一)
每找到一个素数后一定要重置isFlag的值进行下一次寻找;
从较小的数开始到较大的数,循环次数是 j * j < i或者j<=Math.sqrt(i);(优化二)
知识点:
long start = System.currentTimeMillis();
可以获得当时的毫秒数
*/
import java.util.Scanner;
class SuShu{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入第一个整数范围");
int x1 = scan.nextInt();
System.out.println("请输入第二个整数范围");
int x2 = scan.nextInt();
int min = (x1<x2)? x1:x2;
int max = (x1>x2)? x1:x2;
boolean isFlag = true;
int count = 0;
long start = System.currentTimeMillis();//记录开始时间
System.out.println(min + "到" + max + "之间的素数有:");
for (int i = min;i <= max;i++){
for (int j = 2;j<=Math.sqrt(i);j++){
if(i % j==0){
isFlag = false;
break;
}
}
if(isFlag == true){
System.out.print(i + " ");
count ++;
if(count % 6 ==0){
System.out.println(" ");
}
}
isFlag = true;
}
long end = System.currentTimeMillis();
System.out.println(" ");
System.out.println(" ");
System.out.println( min + "到" + max + "之间的素数有" + count + "个");
System.out.println("用时" + (end - start) + "毫秒");
}
}
运行结果: