1.试除法(最慢的算法)
#include<stdio.h>
#include<math.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 (j == i)
{
printf("%d ", i);
}
}
return 0;
}
2.减半法
int main()
{
int i = 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);
}
}
return 0;
}
3.开根号法
int main()
{
int i = 0;
for (i = 100; i <= 200; i++)
{
int j = 0;
int tmp = sqrt(i);
for (j = 2; j <= tmp; j++)
{
if (i % j == 0)
{
break;
}
}
if (j > tmp)
{
printf("%d ", i);
}
}
return 0;
}
4.开根号法的进一步优化
int main()
{
int i = 0;
int j = 0;
int count = 0;
for (i = 101; i < 200; i += 2)
{
for (j = 2; j <= sqrt(i); j++)
{
if (i % j == 0)
{
break;
}
}
if (j > sqrt(i))
{
printf("%d ", i);
count++;
}
}
printf("\n%d\n", count);
return 0;
}