剑三喵金图片安利:c++判断是不是素数函数?

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/03 03:33:26
bool IsPrime(const unsigned long Num)
{
if (Num == 2) return true;
else if ((Num & 1) == 0) return false;//<-这里看不懂 Num & 1是什么意思?有什么作用?

int MaxDivisor = (int)sqrt(Num);
for (int i=3; i<=MaxDivisor; i+=2) {
if (Num%i == 0) return false;
}
return true;
}

& 是按位与的操作符
对于某一位而言:
1 & 0 = 0
0 & 0 = 0
1 & 1 = 1

Num & 1 ,这里的1是 0x1,即只有最低位为1
若Num最低位为1,得1
否则得0

实际上就是判断Num的奇偶,偶数就不用继续算了