判断1个数是否为素数

判断一个数是否为素数

 

以前参加蓝桥杯时写的一个算法,刚才想了一下,个人感觉现在想不出优化的方案,记得当时也跟网上找的几个算法对比过,这个是比较优秀的。

 

 boolean prime(int num) {

	int divisor = 3;
	int testLimit = num;

	if (num % 2 == 0 && num > 2)
		return false;

	while (testLimit > divisor) {
		if (num % divisor == 0) {
			return false;
		}

		testLimit = num / divisor;
		divisor += 2;
	}
	return true;
}


当时是计算一个大数是否为素数,如果数据太多,会导致计算时间过长。

这段代码只是一个demo,如果数据过大也会超过int的范围,可以用long型解决,如果超过long的范围,就得另想办法

比如Java提供了处理大数的类BigInteger,这个类里面提供了方法判断一个数是否为素数