我遇到了数组问题。我复制从一本书中这样的代码:区分两个数组索引?
#include <stdio.h>
#include <stdbool.h>
int main (void)
{
int p, i, primes[50], primeIndex = 2;
bool isPrime;
primes[0] = 2;
primes[1] = 3;
for (p = 5; p <= 50; p = p + 2) {
isPrime = true;
for (i = 1; isPrime && p/primes[i] >= primes[i]; ++i)
if (p % primes[i] == 0)
isPrime = false;
if (isPrime == true) {
primes[primeIndex] = p;
++primeIndex;
}
}
for (i = 0; i < primeIndex; ++i)
printf ("%i ", primes[i]);
printf ("\n");
return 0;
}
特别是,我无法理解primeIndex
和i
变量之间的差异。 primeIndex
是指数组编号,而i
是指放入数组中的数字。对?
任何人都知道这个算法的名字? – bacchus 2012-01-11 23:48:48
请注意,当您设置isPrime = false;时,您还可以明智地添加一个break;(和大括号{...})来尽早终止循环。 – 2012-01-12 00:16:17
更糟糕的是:整个布尔(循环不变+ 1/2)'isPrime'可以通过goto消除,而add-to-array可以被压缩为'primes [primeIndex ++] = p;'顺着'p < = 50'测试应该'primeIndex <50' – wildplasser 2012-01-12 00:35:45