用于循环跳过C中的数字

时间:2017-10-20 08:30:28

标签: c

我正在尝试在c中编写素数检查器,但是下面的代码将一些素数作为非素数返回。我还没能找到任何注册为素数的非素数。我不确定我哪里出错了,我开始怀疑我的for循环正在跳过数字。

#include <stdio.h>
#include <stdlib.h>

int main() {
  int nummer = 47203; 
  printf("Ist %d eine Primzahl?\n", nummer);
  int dividey =2;
  if (nummer == 2){
      printf("nein");

  }    


  for (dividey = 2; dividey <= nummer/2; dividey++){
    if (nummer%dividey==0){
      printf("nein");
      break;
    }else {
      printf("ja");
      break;
    }
  }
}

1 个答案:

答案 0 :(得分:2)

是的,它正在跳过数字 - 因为你已经告诉了它!

如果您正在检查15,例如 - 这显然不是素数。在第一次循环时,dividey设置为2.然后执行以下检查:

 if (nummer%dividey==0)

15 % 2为1,因此此条件失败,您跳转到else部分。

你的其他部分是这样做的:

 printf("ja");
 break;

即。它打印Ja表示它是一个素数并停止循环,即使它不是素数,你也没有检查所有的除数。如果循环继续检查除以3,它就会意识到它不是素数。