C 用数组计算素数

C 用数组计算素数,c,arrays,numbers,C,Arrays,Numbers,我正在读Stephen G.Kochan写的一本书《C语言编程》,第七章练习7,我只讨论了变量、数据类型、算术表达式、程序循环、决策和使用数组,没有其他内容 这个问题要求我们使用一种称为“擦除筛选”的算法来显示前150个素数,其步骤如下所示 步骤1:定义整数P的数组。将所有元素P[i]设置为0,2如下: 它不是一个测试,而是一个赋值(这当然会产生一个值,该值由if测试,但实际表达式不是测试) C有=用于赋值,有=用于相等性测试。启用更多编译器警告。以下几点: 练习是列出最多150个素数(不是前1

我正在读Stephen G.Kochan写的一本书《C语言编程》,第七章练习7,我只讨论了变量、数据类型、算术表达式、程序循环、决策和使用数组,没有其他内容

这个问题要求我们使用一种称为“擦除筛选”的算法来显示前150个素数,其步骤如下所示 步骤1:定义整数P的数组。将所有元素P[i]设置为0,2

如下:

它不是一个测试,而是一个赋值(这当然会产生一个值,该值由
if
测试,但实际表达式不是测试)

C有
=
用于赋值,有
=
用于相等性测试。启用更多编译器警告。

以下几点:

练习是列出最多150个素数(不是前150个素数)

您的每个答案都得到0,因为此代码

if (P[i] = 0)
    printf ("%i ", P[i]);
应该改为

if ( P[i] == 0 )
     printf ("%i ", i); 
您想要打印i——循环索引值——而不是数组元素p[i]的值。

Related:-(或者在您的例子中,是一个更大的数组)。在最好的情况下,您的代码只计算150以下的素数,而不是前150个素数,这些错误是无法抵抗的(确实存在)。
if (P[i] = 0)
    printf ("%i ", P[i]);
if ( P[i] == 0 )
     printf ("%i ", i);