输出素数的代码优化

来源:互联网 发布:数据挖掘工程师培训 编辑:程序博客网 时间:2024/06/04 23:26
输出100到200的素数
#include<stdio.h>int main(){int num = 0;int count = 0;for (num = 100; num <= 200; num++){int number = 0;for (number = 2; number <= num - 1; number++){if (num%number == 0){break;}}if (num == number){printf("%d\n", num);count++;}}printf("count=%d", count);system("pause");return 0;}
</pre><pre class="objc" name="code">对代码进行的优化:根据数学分析,偶数都不是素数,所以只考虑奇数的情况
<pre class="objc" name="code">#include<stdio.h>int main(){int num = 0;int count = 0;for (num = 101; num <= 200; num+=2){int number = 0;for (number = 2; number <= num - 1; number++){if (num%number == 0){break;}}if (num == number){printf("%d\n", num);count++;}}printf("count=%d", count);system("pause");return 0;}

在只考虑奇数的情况下,奇数肯定不能被偶数整除,所以除数也可以只考虑在奇数情况下
#include<stdio.h>int main(){int num = 0;int count = 0;for (num = 101; num <= 200; num+=2){int number = 0;for (number = 3; number <= num - 1; number+=2){if (num%number == 0){break;}}if (num == number){printf("%d\n", num);count++;}}printf("count=%d", count);system("pause");return 0;}
如果一个数能被其他数整除,那么这个数的两个除数中肯定有一个小于等于这个数的开平方数。(16=2*8,16=4*4,)
#include<stdio.h>#include<math.h>int main(){int num = 0;int count = 0;for (num = 101; num <= 200; num+=2){int number = 0;for (number = 3; number <= sqrt(num); number+=2){if (num%number == 0){break;}}if (number > sqrt(num)){printf("%d\n", num);count++;}}printf("count=%d", count);system("pause");return 0;}



1 0
原创粉丝点击