判断数组中哪些是素数,并统计个数,在主函数输出个数和这些素数,函数原型不变

  1. img

(1)第7行的b=0,放在for循环外面(第4行下面)
(2)第10行if(primes[i]/j==0)改成if(primes[i]%j==0)
(3)b++部分,放在for循环外面
if(j==primes[i])
{
data[b++]=primes[i];
}
(4)main函数需要返回值,改成 int main()
代码修改如下:

#include <stdio.h>
int IsPrime(int* data,int *primes,int len)
{
    int i,b=0,j;
    for (i=0;i<len;i++)
    {
        for (j=2;j<primes[i];j++)
        {
            if(primes[i]%j==0)
                break;
        }
        if(j==primes[i])
        {
            data[b] = primes[i];
            b++;
        }
    }
    return b;
}

int main()
{
    int data[1024],primes[1024],len=1024;
    int nmb=0,i;
    for ( i = 0;i<1024;i++)
    {
        primes[i] = i+1;
    }
    nmb = IsPrime(data,primes,len);
    printf("素数个数:%d\n",nmb);
    printf("素数:");
    for(i=0;i<nmb;i++)
    {
        printf("%4d ",data[i]);
    }
    return 0;
}

b=0;放for循环前面

里面primes[i]/j==0应该是primes[i]%j==0写错了一些