了解素数 (只能被自己和 1 整除的数) 概念后, 写代码会容易很多
<1>
这个版本的程序没有经过优化, 是根据最基本的概念写出的代码
- #include<stdio.h>
- #include<stdlib.h>
- int main()
- {
- int i, m;
- for (i = 100; i <= 200; i++)
- {
- for (m = 2; m <= i; m++)
- {
- if (i == m)// 输出条件
- printf("M", i);
- if (i%m == 0)// 若是被除自己外的数整除则跳出
- break;
- }
- }
- system("pause");
- return 0;
- }
- <2>
做了基础优化的代码
- #include<stdio.h>
- #include<stdlib.h>
- #include<math.h>
- int main()
- {
- int i, m;
- for (i = 100; i <= 200; i++)
- {
- for (m = 2; m <= sqrt(i); m++)
- {
- if (i%m == 0)
- break;
- }
- if (m>sqrt(i))// 使用开平方函数, 优化运行次数
- printf("M", i);
- }
- system("pause");
- return 0;
- }
- <3>
另一种方法, 并没有优化
- #include<stdio.h>
- #include<stdlib.h>
- #include<math.h>
- int main()
- {
- int i, m,sum;// 定义计数器
- for (i = 100; i <= 200; i++)
- {
- sum = 0;// 每次循环清零
- for (m = 2; m <= sqrt(i); m++)
- {
- if (i%m == 0)
- sum++;// 不满足条件累加器加一
- }
- if (sum==0)
- printf("M", i);
- }
- system("pause");
- return 0;
- }
- <4>
经过最终优化的程序, 在使用开平方函数的前提下, 去掉循环中的偶数再次减少运行次数, 增加运行效率
- #include<stdio.h>
- #include<stdlib.h>
- #include<math.h>
- int main()
- {
- int i, m;
- for (i = 101; i <= 200; i+=2)
- {
- for (m = 2; m <= sqrt(i); m++)
- {
- if (i%m == 0)
- break;
- }
- if (m>sqrt(i))// 使用开平方函数, 优化运行次数
- printf("M", i);
- }
- system("pause");
- return 0;
- }
C 语言编程输出 100 到 200 的素数的两种方法, 和三步优化(逐步优化)
来源: http://www.bubuko.com/infodetail-2994353.html