1.试除法
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
int j = 0;
for (j = 2; j < i; j++)
{
if (i % j == 0)
{
break;
}
}
if (j == i)
{
printf("%d ", i);
count++;
}
}
printf("\ncount=%d ", count);
return 0;i
}
输出结果:
2.开平方法
i=a*b ,a,b中至少有一个数字<=开平方i
用到了sqrt()函数,注意要添加头文件#include <math.h>
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
int j = 0;
for (j = 2; j < sqrt(i); j++)
{
if (i % j == 0)
{
break;
}
}
if (j>sqrt(i))
{
printf("%d ", i);
count++;
}
}
printf("\ncount=%d ", count);
return 0;
}
3.i=a*b ,a,b中至少有一个数字<=i/2
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
int j = 0;
for (j = 2; j <i/2; j++)
{
if (i % j == 0)
{
break;
}
}
if (j== i/2)
{
printf("%d ", i);
count++;
}
}
printf("\ncount=%d ", count);
return 0;
4.在第2种方法上再做优化,偶数一定不是素数
此时,i 要从101开始
int main()
{
int i = 0;
int count = 0;
for (i = 101; i <= 200; i+=2)
{
int j = 0;
for (j = 2; j <sqrt(i); j++)
{
if (i % j == 0)
{
break;
}
}
if (j> sqrt(i))
{
printf("%d ", i);
count++;
}
}
printf("\ncount=%d ", count);
return 0;
}
以上的四种方法中,第四种效率最高 。