判断一个数是否是素数

来源:互联网 发布:网络上的pj是什么意思 编辑:程序博客网 时间:2024/05/21 19:42

判断一个数是否是素数  

      判断任意一个正整数是质数(即素数)还是合数,在一些有关数论问题中是经常碰到的。当一个正的奇数比较大时,判断是否为质数往往不很容易。现在要求编制一个函数程序,对任意一个正整数,判断出它是质数还是合数,若是质数,则返回值1;若是合数,返回值0,同时给出两个因数;若输入非正数,则返回值-1,并提示错误。

    分析:如果一个正整数M只能被1和它自身整除,那么它就是质数。换句话说,如果正整数M能被2到M-1之间任意一个整数m整除(设商为n),它就是合数,此时,M=m×n。这样我们就找到了一个正整数是质数还是合数的判断方法。但实际实验发现当M很大时,由于2到M-1之间的整数也很多,从而判断计算量很大,运行速度慢。那么,能否对算法加以改进,提高运行速度呢?

    事实上,如果M为合数,则M=m×n,这里2≤m,n≤M-1,如32=2×16,32=4×8,32=8×4,32=16×2。不难发现,m、n从某一个值开始交替出现,从而在实际判断时,只需要考虑m≤n的情形,此时容易证明:2≤m≤√M。所以,只要判断当M不能被从2到fix(sqrt(M))中任何一个整数整除时,M即为质数;否则,为合数,此时计算量大为减少。所以,在进行数学实验问题求解时,算法的改进优化是非常重要的一项工作。

原创粉丝点击