How many prime numbers(解题报告)一种比较高效的素数判断算法
http://acm.hdu.edu.cn/showproblem.php?pid=2138
一开始感觉是水题,就直接点submit在页面上写
bool prime(int n)
{
	if(n < 2)
		return false;
	if(n == 2)
		return true;
	int m = sqrt((float)n);
	for(int i = 3; i <= m; i+=2)
		if(n%i == 0)
			return false;
	return true;
}
但是超时了。因为这样的时间复杂度很依赖n。但n>1000000000时需要几s才能判断出来。
换一种写法:
bool prime(int n)
{
	if(n < 2)
		return false;
	if(n == 2)
		return true;
	if(n % 2 == 0)
		return false;
	int d = 3;
	int l = n;
	while(l > d)
	{
		if(l % d == 0)
			return false;
		l = l / d;
		d += 2;
	}
	return true;
}
推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架