您的位置:首页 > 编程语言

输出素数的代码优化

2015-11-28 11:41 405 查看
输出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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: