C语言求素数问题:这段代码是一段判断素数的代码,有两个问题:1、为什么不用j<sqrt(i)?为什

C语言求素数问题:这段代码是一段判断素数的代码,有两个问题:1、为什么不用j<sqrt(i)?为什么可以用i/2。2、if(j>i/2)这个怎么会呢?j不是<=i\2吗?... C语言求素数问题:这段代码是一段判断素数的代码,有两个问题:1、为什么不用j<sqrt(i)?为什么可以用i/2。
2、if(j>i/2)这个怎么会呢?j不是<=i\2吗??
展开
 我来答
铁打的泥人
2014-07-21 · TA获得超过2068个赞
知道小有建树答主
回答量:741
采纳率:50%
帮助的人:376万
展开全部
  1. i/2是因为,若果一个数在他的一半以前没有数能整除他的话,那之后也就没有了,因为合数所有的因子中,2是最小的。当然,用sqrt(x)也是可以的,不同的方法而已。

  2. for语句中,若循环中只有一条语句,则可以不打花括号。所以题中if(j>i/2)语句不在第二个for循环中,即第二个for循环若自然跳出(即没有经过break,所有的j都遍历了之后自然结束循环),此时的j=i/2+1,就表示在i/2之前没有一个数能被整除,就表示这个数是素数。

    不懂再问

    望采纳

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式