C语言学习笔记(浙大翁恺版)第五周(2)

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语句来跳出循环。</

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值