素数的定义:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。

1.暴力算法:

令i=2; 当i<n的时候,我们循环找出2-i的质数,即让i%(2~i-1),如果flag为true,则i为质数,计数器++;否则跳出,i++;进行下一次判断

 public int countPrimes(int n) {
    int i=2;
int count=0;
boolean flag=true;
while (i<n){
for (int j = 2; j <i ; j++) {
if(i%j==0){
flag=false;
break;
}
}
if(flag) {
count++;
}
flag=true;
i++;
}
return count;
}

2.采用埃拉托斯特尼筛法,先创建一个长度为n的boolean数组,默认值都为false;我们直接从2开始判断,之后用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去…。每次都筛选出 i*j<n的数,置为ture,这样可以减少很多不必要的运算

时间复杂度:O(n*lglgn)

    public static int countPrimes(int n) {
boolean []nums=new boolean[n];
int count=0;
for (int i = 2; i <n ; i++) {
if(nums[i]==false){
count++;
for (int j = 2; i*j <n ; j++) {
nums[i*j]=true;
}
}
}
return count;
}

统计所有小于非负整数 n 的质数的数量,埃拉托斯特尼筛法的更多相关文章

  1. 代码题(2)— 统计所有小于非负整数 n 的质数的数量

    质数也叫素数,只能被1和它本身整除的. 利用筛选法. class Solution { public: int countPrimes(int n) { ) ; ; vector<); ;i&l ...

  2. [leetcode] 204. Count Primes 统计小于非负整数n的素数的个数

    题目大意 https://leetcode.com/problems/count-primes/description/ 204. Count Primes Count the number of p ...

  3. 求最大公约数和小于n的所有质数

    //algorithm.h enum SWAP_TYPE{MEMORY, COMPLEX}; struct SIntArray { int *pData; int num; SIntArray():p ...

  4. 找小于N 的所有质数

    笔试题目当中,找素数出现的几率有点大.昨天就做了一个,感觉不是很难,但可以考查程序员的数学和编码功底. 用嵌套循环来实现是很理想的,怎样减少循环的次数?怎样求出小于N的所有质数? 不可能将一个数除与所 ...

  5. shell统计指定范围内的所有质数以及它们的和

    #!bin/bash a= $) ;do n= $x);do ];then n=$[$n+] fi done ];then { echo -n -e "$x\t" sum=$[$s ...

  6. thinkPHP5.0联表查询和统计文章的图片(栏目文章)数量

    public function index(){ //获取内容列表信息 $res = db('article')->alias('a') ->join('category b', 'b.i ...

  7. httpd进程数统计,IP封禁,IP连接数量情况查看

    ps -ef|grep httpd|wc -l 统计httpd进程数,连个请求会启动一个进程,使用于Apache服务器. 查看Apache的并发请求数及其TCP连接状态:netstat -n | aw ...

  8. 统计dir_path下所有文件类型的文件数量

    #!/bin/bash #!文件名为countfile.sh ]; then echo "Usage is $0 basepath"; exit fi path=$ declare ...

  9. golang 统计uint64 数字二进制存储中1的数量

    package main import (    "fmt") // pc[i] is the population count of i.var pc [256]byte fun ...

随机推荐

  1. java命令-jstack

    jstack用于生产java虚拟机当前时刻的线程快照.线程快照是当前java虚拟机内每一条线程正在执行的方法 堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,比如线程间死锁.死循环. ...

  2. python函数参数*args **kwargs

    毕业多年,把C++都就饭吃了....今天居然在纠结什么是形参什么是实参..... 定义函数里面写的参数就是形参,因为没有内存占用,实际调用时写的参数就是实参,因为有内存占用和传值 然后就是位置参数,可 ...

  3. Socket网络通信——IO、NIO、AIO介绍以及区别

    一 基本概念 Socket又称"套接字",应用程序通常通过"套接字"向网路发出请求或者应答网络请求. Socket和ServerSocket类位于java.ne ...

  4. matplotlib不显示图片

    import matplotlib.pyplot as plt 绘制好图像之后,需要使用plt.show()才会显示出图片.

  5. SCP:从Linux服务器下载文件夹到本地

    原文链接:https://blog.csdn.net/netlai/article/details/79756279 scp /home/work/source.txt work@192.168.0. ...

  6. Python之-爬虫

    1.得到页面的HTML代码 第一个参数是URL 第二三个参数可以不传送,数据和时间 2.request请求 HTTP是基于请求和应答的,客户端发出请求,服务端做出响应,所以urllib2创建一个req ...

  7. tar的具体参数和用法!

    tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...

  8. Find a Way (双bfs)

    Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year ...

  9. 运维 06 vim与程序员

    vim与程序员   所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以 ...

  10. UVA1632_Alibaba

    题目链接 大致题意:直线上面有n个点,第i个点坐标为xi,它会在di时间消失,你可以选择从任何位置出发,求访问完所有点的最短时间,无解输出no solution 思路:这有一个难点就是,不知道状态该怎 ...