(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写错了一些