福华 发表于 2015-11-15 21:30 不是,前面有了exit(0); 那句system("pause");不会运行的 |
rosynirvana 发表于 2015-11-8 22:34 system(“pause”);暂停用,因为啊哈C不会替我暂停 CodeBlock装了不会用 |
4399APPLE 发表于 2015-11-8 20:37 仔细看了,简洁不少 |
4399APPLE 发表于 2015-11-8 20:34 为了方便和简单,所以用了一行语句重定义stdout 更复杂的处理要用FILE 和相关函数 |
4399APPLE 发表于 2015-11-8 20:37 嗯,回头看 |
如果要说prime函数嘛
首先我是支持函数多出口的,否则用goto来写最自然 知道了传进来的i是int,那就应该验证i<2的所有情况 先依次处理i<2, i==2, i是偶数三种情况再开始试除 另外sqrt肯定是个比较慢的过程,这个值只更新一次,如果不确定编译器会不会替你优化,记得放在循环外面。有些人把for的条件写成i*i<=n,这是错误的,因为必须要计算很多次乘法 另外主函数里面exit(0)后面为什么还有system("pause")这种完全无用的语句 最后这样计算某个区间的函数效率太低,可以去题解区看看我写的函数表的算法 |
赞一个!! |
另外一件事就是,你的prime有点啰嗦了...
|
本帖最后由 4399APPLE 于 2015-11-8 20:39 编辑
不怎么推荐重定义stdin,stdout,stderr,定义出去后很难再定义回来 或者可以FILE,然后fprintf |