打印100到200的素数
原代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 0;
for (i = 100;i <= 200;i++)
{
int j = 0;
for (j = 2;j <= i;j++)
{
if (i%j == 0)
{
break;
}
}
if (i == j)
{
printf("%d ", i);
}
}
system("pause");
return 0;;
}
优化
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 0;
for(i=100; i<=200; i++)
{
int j = 0;
for(j=2; j<=i/2; j++) //或者j<=sqrt(i)
{
if(i%j == 0)
break;
}
if(j>(i/2)) //或者j>sqrt(i)
{
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
system("pause");
return 0;
}
因为素数一定为奇数
再次优化
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 0;
for(i=101; i<=200; i+=2) //可以不用判断i为偶数的情况,提高效率
{
int j = 0;
for(j=2; j<=sqrt(i); j++)
{
if(i%j == 0)
break;
}
if(j>sqrt(i))
{
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
system("pause");
return 0;
}