for(m=0,i=a[m];i<=sqrt(n);m++,i=a[m]) 你这里m不做限制吗?m运行到5就越界了。错误就在这里。当然 a[j]=n; 这一句也可能越界,所以简单做法,将定义中的int a[5];修改为int a[100];我这里说的都是伪代码,实际过程中是要考虑开销的。