有谁知道如何解释这段代码? (打印素数)

时间:2013-10-26 07:08:56

标签: java

int max = 100;
    String result="";

    // loop through the numbers one by one
    for (int i = 1; i<max; i++) {
        boolean isPrimeNumber = true;

        // check to see if the number is prime
        for (int j = 2; j < i; j++) {
            if (i % j == 0) {
                isPrimeNumber = false;
                break; // exit the inner for loop
            }
        }
        // print the number if prime
        if (isPrimeNumber) {
           result=result+i+",";//used to holding the value for i
        }
        lblDisplay.setText(""+result);//used to holding the value for i
    }
}                    

首先我将i的值初始化为1并且系统检查1是否小于100 ......它将继续.... 后来j值初始为2,如果j值小于i,系统将循环....但是2大于1 ..为什么系统仍然可以生成结果?谁能告诉我为什么?

1 个答案:

答案 0 :(得分:0)

由于1是一个特殊数字而且它不在素数之下,所以你必须在外循环内分别写1条件:

    if(i == 1)
       isPrimeNumber = false;

并将内圈从中转换为for (int j = 2; j < i; j++)
for (int j = 2; j <= i/2 ; j++)