天天看點

java輸出20内的素數講解,【視訊+圖文】Java基礎經典練習題(一)輸出2-100之間的素數,及素數個數...

目錄能解決題目的代碼并不是一次就可以寫好的

我們需要根據我們的思路寫出後通過debug模式找到不足再進行更改

多次測試後才可得到能解決題目的代碼!

通過學習,練習【Java基礎經典練習題】,讓我們一起來培養這種解決問題思路。

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

1.視訊講解:

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為例i=4 4<100

flag = true

j=2 ,2<4

因為i%j == 0(即4%2 == 0)是以flag = false。并執行break語句。

執行break語句後就退出第二個for循環。(執行break語句後,break語句後面的代碼不會執行并且會終止本層循環)

因為現在的flag ==false不滿足if(flag == true)條件

是以i++ i=5,進入下一次的判斷

結果:

java輸出20内的素數講解,【視訊+圖文】Java基礎經典練習題(一)輸出2-100之間的素數,及素數個數...

4.為大家準備了彩蛋:

java輸出20内的素數講解,【視訊+圖文】Java基礎經典練習題(一)輸出2-100之間的素數,及素數個數...

https://www.cnblogs.com/Qpgshare/p/12516390.html