5.2.1 循环控制
素数:
那么如何写一个程序来判断输入的数是不是素数呢?很简单,让输入的数依次从2到它自己-1求余。如果结果为0则不是素数。
但是这样会出现一些问题,如果按这个思路写代码会得到:
int i;
scanf("%d",&x);
for(i=2;i<x;i++)
{
if(x%i==0)
{
printf("不是素数");
}
}
那么如果我给一个有多个公因数的数进去,比如6,6可以被2和3整除,所以程序会输出两遍“不是素数”,而且没有办法输出“是素数”。
所以我们对代码进行优化,增加一个判断变量 那么为什么要将判断是否为素数的初始值设置为1,也就是默认输出是素数呢?
原因是:我们这个程序是通过穷举来找出是否有值使其求余得0,这实际上是一种证伪,因此预先设定的值应为真值即1,是素数。
继续优化代码:因为一旦可以整除,就可以认定其为非素数,接下来的步骤就多余了,所以在判断可以整除,将判断变量isprime=0之后可以加上一个break语句来跳出循环。</