~素数~

    xiaoxiao2021-03-25  113

           素数又称质数,除了1和它本身以外不再有其他因数的数。1既不是素数,也不是合数。2是最小的素数。

    判断一个数是否为素数的方法很多,接下来我们一一来看:

    法一:让该数num依次除以2,3,…,num-1,若num不能被2~num-1中的任何一个整数整除,则num是素数。

               代码如下:

    int IsPrame(int num) { int i = 0; for(i=2; i<num; i++) { if(num % i == 0) { return 0; } } return 1; }

    法二:让该数num让num依次除以2,3,…,num/2,若num不能被2~num/2中的任何一个整数整除,则num是素数。

               原因:一个整数能被另一个整数整除,最少是他的2倍。

               代码如下:

    int IsPrame(int num) { int i = 0; for(i=2; i<(num/2); i++) { if(num % i == 0) { return 0; } } return 1; }

    法三:让该数num让num依次除以2,3,…,√num,若num不能被2~√num中的任何一个整数整除,则num是素数。

               原因:num能被2~num-1之间任一整数整除,其二个因子必定有一个小于或等于√num,另一个大于或等于√num。

               代码如下:

    int IsPrame(int num) { int i = 0; int n = (int)sqrt((double)num); for(i=2; i<n; i++) { if(num % i == 0) { return 0; } } return 1; }

    注意:使用该断代码时,应包头文件#include <math.h>。

    法四:让该数num让num依次除以3,5,…,若num不能被3,5,…中的任何一个整数整除,则num是素数。

               原因:除2以外,素数不可能是偶数。故循环条件为for(i=1; i<num; i+=2),对应上述3种方法。

               代码如下:

    int IsPrame(int num) { int i = 0; for(i=2; i<num; i+=2) { if(num % i == 0) { return 0; } } return 1; }

    根据以上方法来看,判断一个数否为素数的关键点应为如何设计循环条件,一个好的循环条件可以事半功倍!

     

    转载请注明原文地址: https://ju.6miu.com/read-26299.html

    最新回复(0)