博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetCode(49):Count Primes
阅读量:5739 次
发布时间:2019-06-18

本文共 1663 字,大约阅读时间需要 5 分钟。

Description:

Count the number of prime numbers less than a non-negative number, n.

推断一个数是否是质数主要有下面几种方法:

1)直接用该数除于全部小于它的数(非0。1),假设均不能被它整除,则其是质数。

2)除以小于它一半的数。由于大于其一半必然是无法整除。假设均不能被它整除。则其是质数;

3)除以小于sqrt(a)的数,原因例如以下:

        除了sqrt(a)之外,其它的两数乘积为a的,一定是比个比sqrt(a)小,一个比sqrt(a)大。所以推断到sqrt(a)就能够了,由于还有一半就是刚才做除法的商的那部份。

4)除以小于sqrt(a)的质数就可以。

        由于质数不能被除自身和1外的全部数整除。非质数则不然,且其必定能被某一质数整除。假设一个数能被某一非质数整除。则其必定能被组成这一非质数的最小质数整数。

          从上能够看出,推断一个数是否是质数。其计算量取决于整除的个数。上述四种方法,除数逐渐变少。

通过以上分析,这是本人自己的程序:

class Solution {public:    int countPrimes(int n) {        if (n == 0 || n == 1 || n==2)    		return 0;        	vector
vec;//质数容器 vec.push_back(2); for (int i = 3; i < n; ++i) { int j = 0; int length=vec.size(); for (; j
i) vec.push_back(i); } return vec.size(); }};
以下是在网上找到一个程序,非常具体:

这道题给定一个非负数n,让我们求小于n的质数的个数,题目中给了充足的提示。解题方法就在第二个提示中。这个算法的步骤例如以下图所看到的,我们从2開始遍历到根号n,先找到第一个质数2,然后将其全部的倍数全部标记出来。然后到下一个质数3。标记其全部倍数。一次类推,直到根号n,此时数组中未被标记的数字就是质数。我们须要一个n-1长度的bool型数组来记录每一个数字是否被标记,长度为n-1的原因是题目说是小于n的质数个数。并不包含n。

然后我们用两个for循环来实现埃拉托斯特尼筛法,难度并非非常大。代码例如以下所看到的:

 

埃拉托斯特尼筛法

 

class Solution {public:    int countPrimes(int n) {        vector
num(n - 1, true); num[0] = false; int res = 0, limit = sqrt(n); for (int i = 2; i <= limit; ++i) { if (num[i - 1]) { for (int j = i * i; j < n; j += i) {//为什么要从i*i開始,由于小于i*i的数可能已经被小于i的数整除了。假设没有,那它就是质数 num[j - 1] = false; } } } for (int j = 0; j < n - 1; ++j) { if (num[j]) ++res; } return res; }};

转载于:https://www.cnblogs.com/gavanwanggw/p/6862110.html

你可能感兴趣的文章
用Bootstrap写一份简历
查看>>
ZJU PAT 1023
查看>>
WMI远程访问问题解决方法
查看>>
从零开始学习IOS,(UILabel控件)详细使用和特殊效果
查看>>
Android开发历程_15(AppWidget的使用)
查看>>
阿花宝宝 Java 笔记 之 初识java
查看>>
7、设计模式-创建型模式-建造者模式
查看>>
Cesium官方教程11--建模人员必读
查看>>
我国古代的勾股定理
查看>>
Linux下的C编程实战
查看>>
[32期] html中部分代码与英语单词关系
查看>>
PHP安装环境,服务器不支持curl_exec的解决办法
查看>>
Count and Say
查看>>
9.1(java学习笔记)正则表达式
查看>>
fopen打开文件失败的问题
查看>>
jQuery|元素遍历
查看>>
sql语句大全
查看>>
RedHat 6 安装配置Apache 2.2
查看>>
Openstack 安装部署指南翻译系列 之 Manila服务安装(Share Storage)
查看>>
underscore.js学习笔记
查看>>