这样改,供参考:
#include <stdio.h>
int main()
{
int a = 2, i, count = 0;
scanf("%d", &i);
while (i > 1){
a = 2;
while (i % a) a++;
if (a >= i) count++;
i--;
}
printf("%d", count);
return 0;
}
可以参考这个:
#include <stdio.h>
int is_prime(int num) {
if (num < 2) {
return 0;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int start, end, count = 0;
printf("请输入范围起始值:");
scanf("%d", &start);
printf("请输入范围结束值:");
scanf("%d", &end);
for (int i = start; i <= end; i++) {
if (is_prime(i)) {
count++;
}
}
printf("在范围 %d 到 %d 中有 %d 个素数。\n", start, end, count);
return 0;
}
count定义的时候,没有给初始值0;
应该定义为int i,count=0;