求100000以内的质数的优化(Java版)

求100000以内的质数的优化过程(Java版)

版本一(优化之前):

class PrimeNumberTest2 
{
	public static void main(String[] args) 
	{
		long start = System.currentTimeMillis();//记录开始的时间,以毫秒。
		boolean isFlag = true;
		int count = 0;//记录质数的个数

		for (int i=1;i<=100000 ;i++ )//遍历1到100000个数
		{
			
			for (int j = 2;j < i ;j++ )
			{
				if(i % j == 0)//进行逐个判断
					isFlag = false;
			}


			if (isFlag)
			{
				System.out.println(i);
				count++;
			}
			isFlag = true;
		}
		long end = System.currentTimeMillis();//记录结束的时间
		System.out.println("质数的个数" + count);

		System.out.println("所花费的时间" + (end -  start));

	}
}

下面是执行后所用的结果及时间:

 

运行时间为:18496毫秒(不同计算机可能有差别,但是应该很小) 

版本二(优化一):

class PrimeNumberTest2 
{
	public static void main(String[] args) 
	{
		long start = System.currentTimeMillis();//记录开始的时间,以毫秒。
		boolean isFlag = true;
		int count = 0;//记录质数的个数

		for (int i=1;i<=100000 ;i++ )//遍历1到100000个数
		{
			
			for (int j = 2;j < i ;j++ )
			{
				if(i % j == 0){//进行逐个判断
					isFlag = false;
					break;//优化一:针对非质数进行优化
				}
			}


			if (isFlag)
			{
				System.out.println(i);
				count++;
			}
			isFlag = true;
		}
		long end = System.currentTimeMillis();//记录结束的时间
		System.out.println("质数的个数" + count);

		System.out.println("所花费的时间" + (end -  start));

	}
}

下面是执行后所用的结果及时间:

 运行时间为:2140毫秒(不同计算机可能有差别,但是应该很小)

版本三(优化二):

class PrimeNumberTest2 
{
	public static void main(String[] args) 
	{
		long start = System.currentTimeMillis();//记录开始的时间,以毫秒。
		boolean isFlag = true;
		int count = 0;//记录质数的个数

		for (int i=1;i<=100000 ;i++ )//遍历1到100000个数
		{
			
			for (int j = 2;j <= Math.sqrt(i) ;j++ )//优化二:减少循环次数,针对本身就是质数的优化
			{
				if(i % j == 0){//进行逐个判断
					isFlag = false;
					break;//优化一:针对非质数进行优化
				}
			}


			if (isFlag)
			{
				System.out.println(i);
				count++;
			}
			isFlag = true;
		}
		long end = System.currentTimeMillis();//记录结束的时间
		System.out.println("质数的个数" + count);

		System.out.println("所花费的时间" + (end -  start));

	}
}

下面是执行后所用的结果及时间:

 

运行时间为:537毫秒(不同计算机可能有差别,但是应该很小) 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章