leetcode题解-204. Count Primes
2016-07-18 16:31
447 查看
该题目就是求小于给定参数n的所有素数。题目中所给的提示已经很明显。这里整理出来。
思路一,直接遍历n个数,对每个数进行判断是否为素数即可。但是算法时间复杂度过高,o(n^2)
思路二:使用一个数组表示元素是否为素数。从小到大,将其倍数都设为素数。这样就省去了判断一个数是否为素数的过程,是的时间复杂度大大减小。
思路一,直接遍历n个数,对每个数进行判断是否为素数即可。但是算法时间复杂度过高,o(n^2)
public int countPrimes(int n) { int count =0; for(int i=2; i<n; i++) if(isPrime(i)) count++; return count; } public boolean isPrime(int n) { if(n<=1)return false; //这里判断时的上限是根号下n。可以思考下原因。 for(int i=2; i*i<=n; i++) if(n%i == 0) return false; return true; }
思路二:使用一个数组表示元素是否为素数。从小到大,将其倍数都设为素数。这样就省去了判断一个数是否为素数的过程,是的时间复杂度大大减小。
public int countPrimes3(int n) { int res = 0; boolean[] used = new boolean ; for (int i = 2; i <= Math.sqrt(n); i++) { if (!used[i - 1]) { int temp = i * i; while (temp < n) { used[temp - 1] = true; temp += i; } } } for (int i = 2; i < n; i++) { if (!used[i - 1]) { res++; } } return res; }
相关文章推荐
- iOS UITableView(四)-Cell拖动更改排序
- 微信高级群发接口正文乱码解决方案
- Scollview 和 EditText 滚动冲突
- Android 任务和返回栈详解
- Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart
- HorizontalScrollView作为导航栏和HorizontalScrollView的滑动
- 【Java并发编程】并发之痛 Thread,Goroutine,Actor
- Jenkins配置ant依赖问题
- 莫比乌斯函数
- Notification通知的基本用法
- VS2008下搭建QT环境
- Centos 6.7下图文讲解最新zabbix3.0.3源码安装过程
- 非阻塞同步算法与CAS(Compare and Swap)无锁算法
- Django会话、用户和注册
- UTF-8 Unicode ANSI网页编码的区别
- 解决 MySQL Cluster 通过 某一个MySqld节点新建表时,其他 MySqld节点 看不到表内容的问题
- 用Aspose来打印Word方法类
- Maven(三)——添加外部依赖
- <java编程思想>(thing in java) 阅读笔记(第一章至第六章)
- MAC系统下的环境变量配置java、android、maven