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 通用数据层框架