素数错误

时间:2016-02-19 01:59:51

标签: java loops

我想知道我的素数代码是什么问题。 我觉得这可能与我重复的安排有关,但我不确定。这个想法是因为素数只能被1和1整除,我本人会用f_check来检查这个。它只输出数字2和3.我在哪里出错?

int [] f_numb;
double f_pri;
int f_check = 0;

f_numb = new int [101];

for (int cnto = 2; cnto<=100; cnto++) {

    f_numb [cnto] = cnto;

    for( int cnt=100; cnt>=1; cnt--) {
        f_pri = f_numb [cnto]%cnt;
        if (f_pri==0) {
             f_check=f_check+1;
        }
    }

    if (f_check == 2) {
        System.out.println(f_numb [cnto]);
        f_check = 0;

    }

}

1 个答案:

答案 0 :(得分:1)

当cnto为4时会发生什么?当cnt为4,2和1,总共为3时,你将递增f_check。由于f_check不等于2,它将错过你的if语句,对于你的外部for循环的其余部分,它将永远不会重置为零并且只是继续递增f_check当找到一个数字因子时。