前言
素数:即质数,除了1和自己之外,再没有其他的约数,则该数据为素数
代码实现
这里我们使用 试除法来实现,就是让100到200之间的一个数取名为 i 被[2,i)之间的任意一个数除,只要有一个能够被整除,那它就不是素数。代码里面我们用count来表示素数的个数。
int main()
{
int i = 0;
int count = 0;
// 外层循环用来获取100~200之间的所有数据,100肯定不是素数,因此i从101开始
for (i = 101; i <= 200; i++)
{
//判断i是否为素数:用[2, i)之间的每个数据去被i除,只要有一个可以被整除,则不是素数
int j = 0;
for (j = 2; j < i; j++)
{
if (i % j == 0)
{
break;
}
}
// 上述循环结束之后,如果j和i相等,说明[2, i)之间的所有数据都不能被i整除,则i为素数
if (j == i)
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
return 0;
}
在这个代码里面由于当 j 大于 i /2时 i 一定不会被 j 整除,所以在上述代码中进行了很多无意义的计算。我们把它改进一下
int main()
{
int i = 0;//
int count = 0;
for (i = 101; i <= 200; i++)
{
//判断i是否为素数
//2->i-1
int j = 0;
for (j = 2; j <= i / 2; j++)
{
if (i % j == 0)
{
break;
}
}
//...
if (j > i / 2)
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
return 0;
}
每当有一个新数据时,我们只需要检测在[2,i/2)区间内是否可以整除 i 就可以知道它是否为素数