判断素数的简便算法,为什么可以这样?

比如我要判断一个数是不是素数,为什么我只要判断这个数除以比它小的每一个素数是否整除 就可以了?
应该是数学问题 谢谢懂的朋友们们解答🙏

素数的定义是什么?
就是一个数不能被除它自身和1以外的数整除,就叫素数
那么如果一个数不能被其他素数整除,它必然也不能被合数整除,也就是不能被别的数整除
合数不是可以再分解成素数相乘吗
你可以看看筛法求质数,异曲同工

可以使用数学归纳法证明,这里简要说明首先设当前要判断是否为素数的数字为n,那么要判断n是否为素数可以判断n是否可以由前面n-1个数字整除。那么这n-1个数字可以缩小到n-1个数中所有的素数。因为,我们找假设m为前n-1个数字当中的任一个素数(除1外),那么
如果n可以被m整除,那么n不是素数。
如果n不能被m整除,那对于前n-1个数字里的非素数里的任意一个非素数k,k比可以分解为素数和非素数的乘积,那么n要是整除k那么n必然整除k的素数因子,则于假设矛盾,所以该方法成立

你有没有想过,所有的数都可以用两个或者多个素数相乘?
懂了把?

是这样的,但是不是最有效率的,还可以优化,我写过一篇博客,你可以看看:C/C++中的素数判定

素数也可以被表述成:“在正整数范围内,大于1并且只有1和自身两个约数的数”

因为任何数都可以表示为小于等于他的素数的连乘且表示唯一,那么只要判断他能不能被小于他的素数整除就可以判断他是不是素数。

供参考:https://baike.baidu.com/item/%E5%88%A4%E6%96%AD%E7%B4%A0%E6%95%B0/752971?fr=aladdin