求助
之前在这里看到的一种判断素数的方法,找不到原网页了,想问一下原理是什么
代码如下:
int is_prime(int num) {
//1不是素数
if(number==1)
return 0;
//两个较小数另外处理
if (num == 2 || num == 3)
return 1;
//不在6的倍数两侧的一定不是质数
if (num % 6 != 1 && num % 6 != 5)
return 0;
int tmp = sqrt(num);
//在6的倍数两侧的也可能不是质数
for (int i = 5; i <= tmp; i += 6)//在6的俩侧如果不是素数,那么就是5或者7的倍数,只需要判断是否为这俩个数的倍数即可
if (num % i == 0 || num % (i + 2) == 0)
return 0;
//排除所有,剩余的是质数
return 1;
}