前兩天一個小伙伴問了我一個數(shù)組的練習(xí)題,我一看思路很清晰,就是打印素數(shù)加了個數(shù)組。沒想到寫的時候啪啪打臉,終究還是沒逃過眼高手低。本來不打算發(fā)出來了,因?yàn)榘l(fā)出來愈發(fā)顯得我很菜,最后還是打算分享出來,一來想著剛學(xué)習(xí)數(shù)組的小伙伴看到了多少會有點(diǎn)收獲,再有就是總結(jié)了兩句話。
這里簡單幫基礎(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 } 這個題其實(shí)不難,只不過對于剛學(xué)到這方面知識的小伙伴和像我這樣的菜雞來說需要注意兩個地方:
好了,一個基礎(chǔ)題用的時間竟然是我想象的兩倍,但是也反省了自己 第一:你真的可能比自己想象的還要菜。 第二:自己會做的東西也不一定能立馬做出來,很容易犯眼高手低的錯誤。 第三:不能輕視基礎(chǔ)。 第四:如果基礎(chǔ)真的扎實(shí)了,前幾條都是扯淡。 |
|