求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毫秒(不同計算機可能有差別,但是應該很小) 

 

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