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吗?? 展开
2、if(j>i/2)这个怎么会呢?j不是<=i\2吗?? 展开
1个回答
展开全部
i/2是因为,若果一个数在他的一半以前没有数能整除他的话,那之后也就没有了,因为合数所有的因子中,2是最小的。当然,用sqrt(x)也是可以的,不同的方法而已。
for语句中,若循环中只有一条语句,则可以不打花括号。所以题中if(j>i/2)语句不在第二个for循环中,即第二个for循环若自然跳出(即没有经过break,所有的j都遍历了之后自然结束循环),此时的j=i/2+1,就表示在i/2之前没有一个数能被整除,就表示这个数是素数。
不懂再问
望采纳
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询