【視頻+圖文】Java基礎經典練習題(一)輸出2-100之間的素數,及素數個數


能解決題目的代碼並不是一次就可以寫好的
我們需要根據我們的思路寫出后通過debug模式找到不足再進行更改
多次測試后才可得到能解決題目的代碼!
通過學習,練習【Java基礎經典練習題】,讓我們一起來培養這種解決問題思路。

第一題:判斷2-100之間有多少個素數,並輸出所有素數。

1.視頻講解:

求2-100之間素數思路
求2-100之間素數代碼詳解

2.思路分析:

Q1:什么是素數?
A1: 素數(質數)指的是在大於1的自然數除了1該數本身外無法被其它自然數整除的數。(也就是說一個數只有1和它本身兩個因數

Q2:如何判斷一個數有除了1和該數本身之外的因數?
A2:讓我們以4為例來分析:

  • 判斷4能否整除一個數,無非只有以下4種情況:
    情況1:4/1
    情況2:4/2
    情況3:4/3
    情況4:4/4

  • 那么我們又知道:每個數都有1 和 它本身這兩個因數(即每個數都可以被1和它本身整除)
    所以呢我們在【判斷4能否整除一個數】就只需要考慮以下這兩種情況:
    情況2:4/2
    情況3:4/3

  • 由此我們可以總結出來規律:
    判斷一個數是否有其它因數,就讓這個數去除[2-(需判斷的數-1)]這個范圍內的數
    如判斷4就只需看:4/2、4/3

  • 看這兩種情況中是否有整除情況發生:
    則說明此數不為素數,就進行下一次判斷
    沒有說明此數為素數,需輸出此數,並讓保存【素數個數的變量】加1后再進行下一次判斷。

3.代碼+詳解+答案:

package Exercise;

public class SuShu1 {

	public static void main(String[] args) {
		int i = 0;
		int j = 0;
		int count = 0;//儲存2-100之間的素數個數
		boolean flag = true;
//用處:在當一個數有【除1和它本身之外的因數】時,使其值變為false,以便進入下一次循環
		for (i = 2; i <= 100; i++) {//從2-100開始進行循環
			flag = true;
//每完成一次for循環需要把flag值重新置為true,否則將會影響下次的循環
			for (j = 2; j < i; j++) {
//用此for循環的數字來判斷i是否有【除1和它本身之外的因數】
				if (i % j == 0) {//如果i%j==0,說明i有【除1和它本身之外的因數】
					flag = false;//這時讓flag = false;
					break;//並退出這個雙重for循環
				}
			}
			if (flag == true) {
//從雙重for循環退出后,判斷flag的值是否是true,若為true則說明此數為素數
				count++;//存儲素數的總和加1
				System.out.println("從2-100之間的素數有:" + i);//輸出素數結果
			}
		}
		System.out.println("從2-100之間的素數個數有:" +count);//輸出素數總個數
	}

}

代碼講解:以i=4為例

  1. i=4 4<100
  2. flag = true
  3. j=2 ,2<4
  4. 因為i%j == 0(即4%2 == 0)所以flag = false。並執行break語句。
  5. 執行break語句后就退出第二個for循環。(執行break語句后,break語句后面的代碼不會執行並且會終止本層循環)
  6. 因為現在的flag ==false不滿足if(flag == true)條件
  7. 所以i++ i=5,進入下一次的判斷

結果:
在這里插入圖片描述

4.為大家准備了彩蛋:

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM