|
发表于 2023-11-13 20:57:21
|
显示全部楼层
问题出在程序中的两个地方:
1. 在判断素数的循环中,如果a%b==0,应该将m设为0,然后跳出循环。否则,当a%b!=0时,会将m设为1,但在后续的循环中可能会再次将m设为0,导致判断错误。
2. 在输出素数的数组c中的最后一个元素时,应该输出c[d-1],而不是c[d]。因为数组的下标是从0开始的,所以最后一个元素的下标是d-1。
以下是修改后的代码:
- #include <stdio.h>
- int main() {
- int a, b, c[10000], d = 0, n, m;
- scanf("%d", &n);
- for (a = 2; d < n; a++) {
- m = 1;
- for (b = 2; b < a; b++) {
- if (a % b == 0) {
- m = 0;
- break;
- }
- }
- if (m == 1) {
- c[d] = a;
- d++;
- }
- }
- printf("%d", c[d-1]);
- return 0;
- }
复制代码 |
|