国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

輸出1-100之內的所有質數

2019-11-08 19:25:15
字體:
來源:轉載
供稿:網友

方法一:

 

思路:

1、這個程序用了兩層循環。外層循環列舉從2到100之間的每一個整數(作為被除數),
然后在內層循環中用從2到它之間的數去除它,如果找到了一個能夠整除它的數,內層循環將立即跳出(此時j小于i)。
如果一直沒有找到能夠整除它的數,則當內層循環將2到它之間的所有數都嘗試過一遍之后,內層循環也跳出(此時j等于i)。
2、等到內層循環跳出之后,程序接著判斷j是否大于等于i,如果是(上面第二種情況),
表明這個數是質數,于是將這個數打印出來并計算到累加和中去;如果不是(上面第一種情況),表明這個數不是質數。
1 public static void test2() { 2         int i, j; 3         for (i = 2; i <= 100; i++) { 4             for (j = 2; j < i; j++) { 5                 if (i % j == 0) 6                     break; 7             } 8             if (j >= i) 9                 System.out.PRintln(i);10         }11     }

方法二:

思路:

1、外層循環作為被除數,內層循環作為除數。

2、定義一個開關,標記外層循環數是否為質數。默認為 true

3、內層循環結束,如果開關還為true。即被除數為質數,打印出來

1 public static void test3() { 2         for (int i = 2;i<= 100;i++){//1既不是質數也不是和數,所以從2開始 3             boolean k = true; 4             for (int n = 2; n < i; n++) { 5                 if (i % n == 0) { 6                     k = false; 7                     break; 8                 } 9             }    10             if(k){11                 System.out.print(i + " ");12             }13         }14 }

升級版:  如果能把上兩種方法寫出來,確實已經很好了。但有沒有更優的代碼去實現?

試著去想這些問題:

1、外層for循環有必要執行100次嗎?

除了2所有的偶數都不是質數,那么能不能只遍歷奇數。

代碼:for (int i = 3; i < 100; i+=2) //i一次循環自增2

考慮到這個問題,for循環就少遍歷了50次。效率就提升了一倍

2、內層for循環能不能也做些優化呢?

內層for循環作為 除數(除數從3 到 被除數-1),通過規律發現

除數只需要從3 到 除數的開平方根數 就行了。

1 public static void test4() { 2         boolean bool; 3         for (int i = 3; i < 100; i+=2) { 4             bool = true; 5             for (int j = 3; j <= Math.sqrt(i); j++) { 6                 if (i % j == 0) { 7                     bool = false; 8             break; 9                 }10             }11             if (bool)12                 System.out.print(i + " ");13         }14     }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁南县| 松阳县| 平和县| 邢台县| 衢州市| 蛟河市| 彭阳县| 昂仁县| 会昌县| 乌鲁木齐市| 通州区| 北辰区| 襄樊市| 西乡县| 通化县| 左云县| 来凤县| 延安市| 闻喜县| 天峻县| 三都| 玛曲县| 太康县| 潜山县| 广丰县| 于田县| 辰溪县| 陇西县| 黄石市| 石林| 湖州市| 眉山市| 镇远县| 绥德县| 黔西县| 胶南市| 石楼县| 枣阳市| 清水河县| 上思县| 阜新|