c语言判断正整数是否为素数

如题所述

将:for(k=2;k=x[i]-1;k++)改成:for(g=0,k=2;k=x[i]-1;k++)主要是在这个for循环前令g=0。
因为输入的不止一个数,开头的初始化g=0,在第一个数的时候就可能已经被改了。后面的数不重新初始化g=0,就不能保证对了。
判断一个正整数n是不是素数的思路:
思路1.因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。
思路2.另外判断方法还可以简化。m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ √m 之间的每一个整数去除就可以了。
如果 m 不能被 2 ~ √m 间任一整数整除,m 必定是素数。例如判别 17 是是否为素数,只需使 17 被 2~4 之间的每一个整数去除,由于都不能整除,可以判定 17 是素数。
原因:因为如果 m 能被 2 ~ m-1 之间任一整数整除,其二个因子必定有一个小于或等于 √m,另一个大于或等于 √m。
温馨提示:答案为网友推荐,仅供参考
相似回答