- 输出2000以内的质数
最小的质数为2
public class PrimeNumber {
public static void main(String[] args) {
Boolean isFlag = true; //标识i是否被i除尽
// 获取当前时间距离1970-01-01 00:00:00的毫秒数
long starTime = System.currentTimeMillis(); //起始时间
for (int a = 2;a<2000;a++)
{ isFlag = true; // 每次进来for循环之前都需要重置标识
// for(int b=2; b<a;b++)//原始方式
// 优化方式2: 对本身是质数的自然数是有效的
for(int b=2; b<Math.sqrt(a);b++)
{
if(a%b==0) //如果被整除
{
isFlag = false;
break;//优化方式1:加break可以提高运行速率,只是对本身非质数的自然数是有效的
}
}
if(isFlag)
{
System.out.println(a);//这句话的输出也会影响运行的速度
}
}
// 获取当前时间距离1970-01-01 00:00:00的毫秒数
long endTime = System.currentTimeMillis(); //终止时间
System.out.println("找出所有质数所花费的时间为:"+(endTime-starTime));//没有优化:9s 优化方式1:6s 优化方式2:4s
}
}
- 采用continue的方式
public class PrimeNumberContinue {
public static void main(String[] args) {
Boolean isFlag = true; //标识i是否被i除尽
// 获取当前时间距离1970-01-01 00:00:00的毫秒数
long starTime = System.currentTimeMillis(); //起始时间
int num = 0;
Flag: for (int a = 2;a<2000;a++)
{
for(int b=2; b<Math.sqrt(a);b++)
{
if(a%b==0) //如果被整除
{
continue Flag; //注意continue的使用方式
}
}
if(isFlag)
{
System.out.println(a);//这句话的输出也会影响运行的速度
}
num++;
}
// 获取当前时间距离1970-01-01 00:00:00的毫秒数
long endTime = System.currentTimeMillis(); //终止时间
System.out.println("质数的总个数为"+num);
System.out.println("所花费的时间为:"+(endTime-starTime));//
}
}