我正在尝试在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;
    }
  }
}

最佳答案

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

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

 if (nummer%dividey==0)


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

您的其他部分执行此操作:

 printf("ja");
 break;


即它会打印Ja来表示它是质数,并且即使不是质数并且您没有检查所有除数,也会停止循环。如果循环继续检查是否除以3,则将意识到它不是素数。

关于c - 对于C中的循环跳过数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46845194/

10-11 15:13