1. 程式人生 > >輸出1-100之內的所有質數

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

方法一:

思路:

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     }

相關推薦

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

兩層迴圈 public class hw40417 { public static void main(String[] args) { int i, j; for (i = 1; i <= 100; i++) { f

輸出1-100之內所有質數

方法一: 思路: 1、這個程式用了兩層迴圈。外層迴圈列舉從2到100之間的每一個整數(作為被除數), 然後在內層迴圈中用從2到它之間的數去除它,如果找到了一個能夠整除它的數,內層迴圈將立即跳出(此時j小於i)。 如果一直沒有找到能夠整除它的數,則當內層迴圈將2到它之間的所

python入門:輸出1-100之內所有奇數和偶數

utf env false 報錯 pytho 賦值 1-1 pass 所有 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #輸出1-100之內的所有奇數和偶數 4 """ 5 給start賦值等於1,whi

JavaScript 用for迴圈輸出1-100之間所有質數(只能被1和自身整除的數,不包括1

用for迴圈輸出1-100之間所有的質數(只能被1和自身整除的數,不包括1) 也就是說 2 3 5 7 11 。。。等只有被1和自身整除的數字。 如何判斷出1到100的字數呢? 拿  51這個數字舉例  我們可以用for迴圈記錄一下   51%j=0的發生了幾次 這

輸出1~100之內的素數及素數個數簡單程式

#include <stdio.h> int main() {     int i;     int j;     int k = 1;     for(i = 1; i <= 100; i++)     {         if(i == 2)    

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

方法 () pre 整數 之間 col 判斷 循環 pub 質數定義:在大於1的自然數中,除了1和它本身以外不再有其他因數,這樣的數稱為質數。 也就是說質數只能被1或者其本身兩者整除。   思路:要判斷n是否是質數,可以用n除於不大於n的整數(即n%m),當且僅當(n%m=

習題:輸出1-100之間的所有質數(素數)

/*程式目的:輸出1-100之間的所有質數(素數),並統計其個數。*/# include <stdio.h>int main(void){ int i, n, t = 0; for (n=1; n<=100; ++n) { for(i=2; i<=n; ++i) { if(n%

JS基礎_打印出1-100之間所有質數

code pre logs 質數 打印 body 保存 pan ole 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"

輸出 1-100 內的所有奇數、偶數

輸出 spa family print pos while class pri font 輸出 1-100 內的所有奇數 、偶數 奇數: 方法一: for x in range(1,101): if x%2!=0:

輸出 1-100 內的所有奇數和

開始 pyc odin IT arm pytho print count .py #!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2018/5/6 0006 10:52# @Author : Anthony

go語言求1100之內質數

clas package 合數 math 自然 import 兩個 一個 imp 素數指在一個大於1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的數。換句話說,只有兩個正因數(1和自己)的自然數即為素數(也叫質數)。比1大但不是素數的數稱為合數。1和0既非素數也

C 語言例項1—— 列印0~100之間所有質數

#include <stdlib.h> int main() { int number; int divisor; /* ** One and two are easy. */ printf( "1\n2\n" ); /* ** No other even

程式基本演算法習題解析 使用篩選法求出1~100之內所有素數

思路:              第一個素數是2,把後面是2的整數倍的數全部篩去,篩去的數置0;從第一個素數2向後找出最小的未被篩去的數3,把它後面是3的整數倍的數全部篩去並置0;重複上述過程,直到新找到的素數大於1

演算法練習-打印出1-100以內所有質數

題目要求: 打印出1-100以內所有的質數。 例如: 數字5, 只能被1和5整除。 沒有其他因數 JavaScript 做法 <script> // 質數陣列 var zhishuArr=[];

1~100之間所有質數

//方法一 for(var i = 2;i < 100;i++){var count = 0;for(var j = 1;j <= i; j++){if(i%j == 0){count++

編寫程式輸出1000以內,只能被自身和1整除的所有質數

int zhishu(int a); int main(int argc, const char * argv[]) {     int c=0;     int i;     for (i=100; i<1000; i++)     {         if(z

C語言程式設計小測試。輸出1-100內的所有素數。

#include<stdio.h> //輸出100之內的所有素數 int main() {     int i;     int j;     int flag = 1;     for(i = 2;i <= 100;i++)     {        

用java求出1-100所有質數/素數

用java語言求出1-100以內的素數素數:A>1 &&         A%1==0 &&         A%A==0 &&         A%B!=0(1<B<A)         則A為素數思路:用A

求出1-100之間所有的素數(只能被1和它本身整除),要求每5個換行輸出

publicclass chengxu2 {        public static void main(String[] args) {               int count = 4;               System.out.print("2 3 5

組合語言學習:使用masm32尋找1-100中的質數

最近有點自閉,事情賊多,還要學這麼變態的彙編(╥╯^╰╥)。經過異常艱難的探索,終於完成了課程的第一個作業——用masm32尋找1-100的質數,寫下此篇部落格,轉換一下心情。( • ̀ω•́ )✧ 事先宣告,我是組合語言的萌新,接下來的程式碼可能存在許多多餘和不合適的地方,而且我把所有的變