c - 区分两个数组索引?

标签 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 指的是放入数组的编号。对吧?

最佳答案

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

关于c - 区分两个数组索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8828315/

相关文章:

c++ - C、C++通过USB适配器写入并口(LINUX)

java - (Java初学者)为什么我的数组为空?

c - C 中的数组清理

javascript - 如何将php数组传递给另一个js文件

c - 两个连续质数之间的最大差值

algorithm - 计算连续素数分解

c - 访问 main 之后定义的函数

c - 如何在unix中获取完全限定域名

c - C 中二维变长数组的结构

java - 求一个数的因数的方法