素数又称质数,除了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;
}
根据以上方法来看,判断一个数否为素数的关键点应为如何设计循环条件,一个好的循环条件可以事半功倍!