日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Java循環(huán)和數(shù)組練習(xí)題:打印素數(shù)升級版

 小世界的野孩子 2020-06-14

  前兩天一個小伙伴問了我一個數(shù)組的練習(xí)題,我一看思路很清晰,就是打印素數(shù)加了個數(shù)組。沒想到寫的時候啪啪打臉,終究還是沒逃過眼高手低。本來不打算發(fā)出來了,因?yàn)榘l(fā)出來愈發(fā)顯得我很菜,最后還是打算分享出來,一來想著剛學(xué)習(xí)數(shù)組的小伙伴看到了多少會有點(diǎn)收獲,再有就是總結(jié)了兩句話。

題目內(nèi)容:
 我們認(rèn)為2是第一個素數(shù), 3是第二個素數(shù), 5是第三個素數(shù),依次類推。
 現(xiàn)在,給定兩個整數(shù)n和m, 0<n<=m<=200, 你的程序要計算第n個素數(shù)到第m個素數(shù)之間所有的素數(shù)的和,包括第n個素數(shù)和第m個素數(shù)。
 注意,是第n個素數(shù)到第m個素數(shù)之間的所有的素數(shù),并不是n和m之間的所有的素數(shù)。
 輸入格式:
 2 5
 兩個整數(shù),第一個表示n,第二個表示m。
 一個整數(shù),示第n個素數(shù)到第m個素數(shù)之間所有的素數(shù)的和,包括第n個素數(shù)和第m個素數(shù)。
 輸入樣例:2 4
 輸出樣例:15

  這里簡單幫基礎(chǔ)不是很好的小伙伴分析一下思路,如果會的小伙伴可以直接跳過去自己寫一下或者直接去看下面的代碼,當(dāng)然代碼上也盡量寫上了詳細(xì)的注釋。

  首先,素數(shù)什么的就不在這兒解釋了;題上要求程序要計算第n個到第m個素數(shù)之間的所有素數(shù)之和,因?yàn)閙、n是未知的,所以我們得先把200以內(nèi)的素數(shù)全部挑出來;人家下面說了m、n是要輸入的,所以你挑出來的素數(shù)不能直接打印出來,需要先存到數(shù)組里,那么我們就得定義一個數(shù)組方便存取素數(shù)。好了,上代碼。

 1 package test;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Test {
 6 
 7     public static void main(String[] args) {
 8         //獲取控制臺輸入的內(nèi)容    這里如果不會就先去學(xué)習(xí)一下鍵盤錄入
 9         Scanner sc = new Scanner(System.in);
10                 
11         //加一個輸入提示
12         System.out.println("請輸入m和n的值:(0<n<=m<=200)");
13         int n = sc.nextInt();//鍵盤錄入
14         int m = sc.nextInt();// n和m是題中給的范圍條件
15         
16         //判斷一下輸入的m、n是否符合條件
17         if (n <= 0 || n > m || m > 200) {
18             System.out.println("輸入格式有誤!");
19         }
20 
21         int sum = 0;// 最后的和
22         int a[] = new int[200];// 定義一個數(shù)組用來存放素數(shù)
23         int x = 0;// 將素數(shù)存到數(shù)組里需要的索引
24 
25         for (int i = 2; i <= 200; i++) {
26             boolean flag = true;// 弄一個標(biāo)記,是素數(shù)標(biāo)true,不是素數(shù)改成false 默認(rèn)值為true
27 
28             // 判斷第i個數(shù)是不是素數(shù)
29             for (int j = 2; j < i; j++) {// 拿i依次除以2、3、4、5一直除到比i小一的數(shù)
30 
31                 if (i % j == 0) {// 如果有一個能除進(jìn),就不是素數(shù)
32                     flag = false;// 不是素數(shù)就給他標(biāo)記成false
33                     break; // 只要出現(xiàn)一次能除盡的情況就不是素數(shù),直接跳出內(nèi)循環(huán),節(jié)省時間
34                 }
35             }
36 
37             if (flag) {// 沒有標(biāo)上false就說明是素數(shù)
38                 a[x] = i; // 符合了條件就給他放數(shù)組里面
39                 x++;//每存入一個素數(shù)索引加一,以便下次存放
40             }
41 
42         }
43 
44         // 因?yàn)閿?shù)組的索引是從0開始,題上要求的2是第一個素數(shù)所以需要給n和m都-1
45         for (int i = n - 1; i <= m - 1; i++) {
46             sum += a[i];// 從第n個素數(shù)一直加到第m個素數(shù)
47         }
48         System.out.println("第" + n + "個素數(shù)到第" + m + "個素數(shù)之間所有的素數(shù)之和為:" + sum);
49 
50         sc.close();//關(guān)閉流,如果不關(guān)閉也不會報錯只會有警告
51 
52     }
53 
54 }
  結(jié)果:
    請輸入m和n的值:(0<n<=m<=200)
    2
    4
    第2個素數(shù)到第4個素數(shù)之間所有的素數(shù)之和為:15

  這個題其實(shí)不難,只不過對于剛學(xué)到這方面知識的小伙伴和像我這樣的菜雞來說需要注意兩個地方:

 

 

   好了,一個基礎(chǔ)題用的時間竟然是我想象的兩倍,但是也反省了自己

  第一:你真的可能比自己想象的還要菜。

  第二:自己會做的東西也不一定能立馬做出來,很容易犯眼高手低的錯誤。

  第三:不能輕視基礎(chǔ)。

  第四:如果基礎(chǔ)真的扎實(shí)了,前幾條都是扯淡。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多