存款营销计划:如何编写查找素数的函数

来源:百度文库 编辑:神马品牌网 时间:2024/04/27 20:59:17
查找m内的素数,并把所有的素数放到a[]中,通过k返回个数;

void fun(int m,int *k,int a[]){
int i,j,t,n=0;
for(i=2;i<m;i++)
{
for(j=2;j<i;j++)
if(i%j!=0)
a[n++]=i;
}
*k=n;

}

运行结果不正确,
请问出错在什么地方, 该如何编写,以最简练,最通俗的方法;

for(j=2;j<i;j++)
if(i%j!=0)
a[n++]=i;
这个地方有问题
比如i=9
j=2时
i%j!=0就真了,就当成了素数

改法可以多加个判断标志变量c,j=2到i-1后看有没有整除过就好了
void fun(int m,int *k,int a[]){
int i,j,t,n=0,c;
for(c=1,i=2;i<m;i++)
{
for(j=2;j<i;j++)
if(i%j==0)
c=0;
if(c==1)
a[n++]=i;
}
*k=n;

}

#include<stdio.h>
#include<math.h>
void fun(int m,int *k,int *a){
int i,t,n=0;
for(i=2;i<m;i++)
{
for(t=2;t<i;t++)
if(i%t==0)break;
if(t>=i)a[n++]=i;
}
*k=n;
}
void main()
{
int i,k,a[100];
fun(100,&k,&a[0]);
printf("k==%d\n",k);
for(i=0;i<k;i++)
printf("\n%d",a[i]);
}