区分两个数组索引?

时间:2012-01-11 23:40:17

标签: c arrays primes

我遇到阵列问题。我从一本书中复制了这段代码:

#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;
}

特别是,我无法理解primeIndexi变量之间的差异。 primeIndex表示数组编号,i表示放入数组的编号。正确?

1 个答案:

答案 0 :(得分:3)

primeIndex是在prime数组中写入下一个找到的素数的地方,也是到目前为止已知的素数的数量。 i是用于试验分割的素数的指数。对于每个候选者,i从1循环(我们不需要尝试primes[0] = 2,因为只检查奇数)到第一个素数的索引大于候选的平方根。 / p>