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