我想知道我的素数代码是什么问题。 我觉得这可能与我重复的安排有关,但我不确定。这个想法是因为素数只能被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;
}
}
答案 0 :(得分:1)
当cnto为4时会发生什么?当cnt为4,2和1,总共为3时,你将递增f_check。由于f_check不等于2,它将错过你的if语句,对于你的外部for循环的其余部分,它将永远不会重置为零并且只是继续递增f_check当找到一个数字因子时。