要输出2到n之间的所有素数,每行打印五个,右对齐,请问这个程序哪错了?

要输出2到n之间的所有素数,每行打印五个,右对齐,请问这个程序哪错了?

由于没有你的头文件zylib.h,所以无法编译从程序本身看,main函数中 for(i=2;i<=j;++i); { for(k=1;k<=5;++k) { if(IsPrime(i)==TRUE) printf("%6d",i); } printf("\n"); }是错的。错在内部循环,如果i是素数,则你会将其输出5次。可以修改为 k = 0; for(i=2;i<=j;++i); { if(IsPrime(i)==TRUE) { k++; printf("%6d",i); } if(k==5) { k = 0; printf("\n"); } }其余不变,这样应该就对了。