请高手看看为什么我编的素数查找会出现divide error

来源:百度知道 编辑:UC知道 时间:2024/06/04 19:26:27
我的程序如下,不知道为什么,一运行,输入完数以就在下一行显示divide error
#include<conio.h>
#include<stdio.h>
void fun(int m,int k,int xx[])
{int a,i;
a=0;
i=0;
while(a<k)
{m++;
for(;i<m;i++)
{if(m%i){i=0;break}}
if(c!=0){xx[a++]=m;}
}}
main()
{int m,n,zz[1000];
clrscr();
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");
}
虽然最后并没有按照你说那样,但因为你的程序发现了两个错误,一个是应该在for循环跳出后加一句i=2;所以我就干脆把for改成for(i=2;i<m;i++),第二个是if(m%i)应改成if(!(m%i)),修改之后程序就好了,

把函数重写了一遍,原来那个写的看不懂。。。

#include<conio.h>
#include<stdio.h>
void fun(int &m,int &k,int *p)
{
int a,i;
a=0;
i=2;
while(a<k)
{
m++;
for(; i < m; i++)
{
if(m % i == 0)
break;
}
if(i == m)
{
p[a] = m;
a++;
}
i = 2;

}
}
int main()
{
int m,n,zz[1000],*p = zz;
printf("\nplease enter two integers:");
scanf("%d,%d",&m,&n);
fun(m,n,p);
for(m=0;m<n;m++)
printf("%d ",zz[m]);
printf("\n");
return 0;
}