你的程序有两个问题:1.素数的判断不仅有点多了,其实判断到sqrt(a),而且可以从3开始加2的循环,当然这并不影响结果,但是你有个致命的错误就是if (i == a - 1) return 1;即是素数时候返回1,测试一下你就知道应该是i == a,因为退出循环式i已经加1了,不应该呀。你的源程序判断5都为合数;2.也很不应该,你的程序按理说是无法输出ok的,tf=1则继续到了就退出循环了,tf=0则直接退出了,好像测试数据都不对啊~要多多调试,多多测试,当然要多多仔细啊~祝好。我的已经过了~