我正在尝试在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;
}
}
}
答案 0 :(得分:2)
是的,它正在跳过数字 - 因为你已经告诉了它!
如果您正在检查15,例如 - 这显然不是素数。在第一次循环时,dividey
设置为2.然后执行以下检查:
if (nummer%dividey==0)
15 % 2
为1,因此此条件失败,您跳转到else
部分。
你的其他部分是这样做的:
printf("ja");
break;
即。它打印Ja表示它是一个素数并停止循环,即使它不是素数,你也没有检查所有的除数。如果循环继续检查除以3,它就会意识到它不是素数。