法国作家雨果:C语言问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 08:47:04
求与整数m紧靠的K个素数存入数组XX中
编写函数num

比如说是输入17,5
输出19,23,29,31,37
以下是我编的可是不运行呀
帮我看看是怎么回事
谢谢了

#include<conio.h>
#include<stdio.h>
void readwriteDAT();

void num(int m,int k,int xx[])
{int i,n=0,j,f;
for(i=m+1;n<k;i++)
{
for(j=2;j<i/2;j++)
{f=0;
if(i%j==0)
f=1;
}
if(f==0)
xx[n++]=i;
}
}

main()
{
int m,n,xx[1000];
clrscr();
printf("\nPlease enter two integers:");
scanf("%d,%d",&m,&n);
num(m, n, xx);
for(m=0;m<n;m++)
printf("%d ",xx[m]);
printf("\n");
readwriteDAT();
}

void readwriteDAT()
{
int m, n, xx[1000],i;
FILE *rf,*wf;
rf=fopen("in31.dat","r");
wf=fopen("out31.dat","w");
for(i=0;i<10;i++)
{
fscanf(rf,"%d %d",&m,&n);
num(m,n,xx);
for(m=0;m<n;m++)
fprintf(wf,"%d ",xx[m]);
fprintf(wf,"\n");
}
fclose(rf);
fclose(wf);
}
这个是我编的和原来的程序

void num(int m,int k,int xx[])
{int i,n=0,j,f;
for(i=m+1;n<k;i++)
{
for(j=2;j<i/2;j++)
{f=0;
if(i%j==0)
f=1;
}
if(f==0)
xx[n++]=i;
}
}
这个是我编的
帮我看看是哪错了

在num函数中的第二重循环的if里加一条break。
不然每次除的时候都会吧f的值赋成0
void num(int m,int k,int xx[])
{
int i,n=0,j,f;
for(i=m+1;n<k;i++)
{
for(j=2;j<i/2;j++)
{
f=0;
if(i%j==0)
{
f=1;
break;
}
}
if(f==0)
xx[n++]=i;
}
}