【发布时间】:2023-03-09 22:02:01
【问题描述】:
我已经开始学习 C 语言了。我编写了这个程序来查找给定范围内的所有素数,但我无法获得预期的输出。
谁能告诉我这个程序有什么问题?
#include <stdio.h>
#include <conio.h>
void main() {
int min, max, i, j, count = 0;
printf("Enter Your First Number\n");
scanf("%d", &min);
printf("Enter Your Last Number\n");
scanf("%d", &max);
for(i=min; i<=max; i++) {
for(j=1; j<=i; j++) {
if(i % j == 0) {
count++;
}
}
if(count==2) {
printf("%d\t",i);
}
}
getch();
}
【问题讨论】:
-
您需要为每个候选人重置
count。 -
除了@WeatherVane说的,如果你会写函数,最好创建一个
isPrime函数。 -
i%j对每个 i 和j==1 || j==i都为真。您应该在调试器中测试您的程序。在这里询问时,请始终提供一切,以便其他人可以重现问题。在您的情况下,缺少给定的输入、预期的输出和观察到的输出。 (见minimal reproducible example) -
数字 0 和 1 被定义为非质数,但是,对于当前代码,当
min的值是这些数字中的任何一个时,就会发生“坏”事情。