【发布时间】:2017-12-05 19:45:39
【问题描述】:
我想编写一个程序,将 10.000 之前的所有非质数(复合)数存储在一个数组中。我在下面做了这个算法,但它不起作用。当我打印出应该包含合数的数组时,它只是从 4 计数到 10.000 。
问题出在哪里?我真的看了很多,但我看不到。
#include <stdio.h>
#define SIZE 10000
void compositeChecker(int[]);
int main() {
int k;
int compositeArray[SIZE]= {0};
compositeChecker(compositeArray);
for(k=0; k<100; k++) {
printf("%d\n",compositeArray[k]);
}
}
void compositeChecker(int arr[]) {
int i,j,counter=0;
for(i=4; i<10000; i++) {
for(j=2; j<i; j++) {
if((i%j)==0) {
counter++;
}
}
if(counter!=0) {
arr[i-4]=i;
}
}
}
【问题讨论】:
-
使用调试器并单步执行您的程序。
-
鉴于在第一次循环迭代
i == 4中,您增加了counter,因此counter永远不会再次0,您只是用@987654327 的连续值填充arr@.