c语言————判断M是否为素数

来源:百度知道 编辑:UC知道 时间:2024/05/11 13:32:02
为什么说:“如果M能被2…sqrtM之中任何一个整数整除”
为什么选sqrtM

sqrt是开平方运算,也就是在此时,M表示为两个相等的数相乘。而非素数是说M可表示为两个整数相乘。那么对于非素数M来说,必然是一个大于sqrt(M) ,一个小于sqrt(M),或者两个数等于sqrt(M),所以,只要验证2到 sqrt(M)中是否有能整出M的就可以了,简单的说,就是要找到可分解M的那个较小的因数。

因为,如果M能被大于sqrtM的整数整除,那么除法结果一定是2..sqrtM的整数,否则这两个相乘一定大于M。所以只需要用2..sqrtM之中的整数判断。(sqrtM是M开平方)

要判断M是否为素数,只要判断2-sqrt(M)就行了,注意是:sqrt(M).你不一定要选这个,也可以选M/2或者从2到M-1啊.至于选sqrt(M)是考虑算法的效率问题还有时间复杂度吧.