Live2D

求助

之前在这里看到的一种判断素数的方法,找不到原网页了,想问一下原理是什么

代码如下:

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;
}

 

posted @ 2019-09-19 17:54  风吟承渊  阅读(108)  评论(0)    收藏  举报