|
|
发表于 2012-4-27 13:10:47
|
显示全部楼层
本帖最后由 小王子之歌 于 2012-4-27 13:15 编辑
话说,2就是素数啊,木神马不对...不过请允许俺直接吐槽,首先LZ的代码不符合题目要求...貌似是要求打印前100个素数,但LZ的代码明显是找出小于1000内的素数,但如何1000内没有100个素数呢?不就错了?其次,如果500左右就找到前100个素数了,那后面循环不就白浪费了?? 执行效率问题啊...- #include<stdio.h>
- #include<math.h>
- int main(void)
- {
- int num, //自然数
- i,
- k, //小于等于根号num的被除数
- j = 1; //计算器,<=100
- printf("%6d", 2);
- for(num = 3;;num += 2) //因为除2外,偶数必定不为质数,与num++比,循环次数少1倍
- {
- k = sqrt(num);
- for(i = 2; i <= k; i++)
- {
- if(!(num % i)) break;
- }
- if(i > k)
- {
- printf("%6d", num);
- j++;
- if(!(j % 10)) printf("\n");
- }
- if(100 == j) break;
- }
- return 0;
- }
复制代码 已测试通过...仅参考,呵呵 |
|