素数问题,高手请进。该函数将大于整数m且紧靠m的k个素数存进xx数组中。

来源:百度知道 编辑:UC知道 时间:2024/06/25 15:51:17
void fun(int m, int k, int xx[])
{
int g=0,i,j,flag=1;
for(i=m+1;i<m*m;i++)
{
for(j=2;j<i;j++)
{
if (i%j!=0)
flag=1;
else
{
flag=0;
break;
}
}
if (flag==1&&j>=i)
{
if (k>=0)
{
xx[g++]=i;
k--;
}
else
break;
}
}
}

main()
{
int m,n,zz[1000];
FILE *out;
printf("\nPlease enter two integers:");
scanf("%d,%d",&m,&n);
fun( m,n,zz);
for(m=0; m<n; m++)
printf("%d ", zz[m]);
printf("\n");
fun(28, 20, zz);
out = fopen("out.dat", "w");
for (m = 0; m < 20; m++)
fprintf(out, "%d\n", zz[m]);
fclose(out);
}
为什么if (flag==1&&j>=i)中j要>=i呢?j怎么会>i呢????

不需要j>=i,可能该程序以前不是采用flag进行判断的,而是直接使用j>=i进行判断的,在C中最后的j++是会加到j=i的,所以该判断还是成立的,还有一点是该程序相当的不好,要判断素数只要判断到该数的平方根就好了,无需判断到该数的,这样可节约很多时间。

请问哪国人啊