注意:1既不是质数也不是合数,2是质数。

1. 复杂度为O(nsqrt(n))

原理:先写一个判断整数是否为素数的函数,其复杂度为sqrt(n),其原理是对于一个数n,如果它有除了1和自身之外的因子,那么这个因子要么成对出现,一个在(1,sqrt(n)),另一个在(sqrt(n),n)。要么为sqrt(n)。因此只要判断(1,sqrt(n)]范围内有没有因子就好了。

判断函数的两种写法如下

bool isPrime(int n){if(n<=1)return false;//特判 for(int i=2;i<=(int)sqrt(1.0*n);i++){if(n%i==0)return false;}return true;
}

说明:sqrt得到的结果为浮点型,强制转化为整型是对其向下取整

注意:i从2开始遍历

bool isPrime(int n){if(n<=1)return false;//特判 for(int i=2;i*i<=n;i++){if(n%i==0)return false;}return true;
}

注意:i*i可能溢出,最好声明i为long long型。

2. 复杂度为O(nloglogn)

原理:用一个长度为101的布尔数组,存放1-100这100个数字是否为素数。从2开始,遇到一个素数,就把这个素数在100以内的所有倍数都初始化为false。

int main(){bool isPrime[maxn] = {0};//maxn = 101,默认都是素数,再筛去不是的 isPrime[2] = 0;for(int i=2;i<maxn;i++){if(!isPrime[i]){for(int j=i+i;j<maxn;j+=i){isPrime[j] = true;}}}   return 0;
}

注意学习这里碰到一个素数,找它的倍数的方法。

还有一个很重要的一点,一开始我困惑不是筛出吗?那不应该一开始全部初始化为true吗?但是请注意了,给数组统一初始化只能是0,不能是1,因此只能绕个弯用0来表示这个数是素数。

(C++)寻找1-100以内所有素数,复杂度为O(nsqrt(n))与O(nloglogn)的两种方法相关推荐

  1. Python求100以内的素数和并输出

    #求100以内的素数并输出 def isPrime(num):for i in range(2,num):if num%i == 0:return Falsereturn True sum = 2#1 ...

  2. 2、求100以内的素数之和。(20分)

    题目: /* 2.求100以内的素数之和.(20分) */ 代码: public class Two207 {public static void main(String[] args) {int s ...

  3. 用筛选法求100以内的素数(数组)

    用筛选法求100以内的素数,要求使用数组. #include "stdafx.h" #include<iostream> using namespace std; in ...

  4. 每日程序C语言25-查找100以内的素数

    题目: 求100以内的素数 程序分析 我们之前写过一个程序,求固定范围内的素数,和这个题是相同的,但是还是一起来巩固一下 主要代码 int main(){int i,j;printf("10 ...

  5. 20以内的素数编码C语言,用C语言 输出100以内的素数,

    用C语言 输出100以内的素数, 用C语言 输出100以内的素数, 输出100以内的素数,谁能帮一下,我做了好久没做出来,也想了好久, 能带注释那更好了,我是新中新手,还有很多很多的不懂, 搜索更多相 ...

  6. 【Java】计算1+3+5+7+9和100以内的素数

    package com.company;public class Main {public static void main(String arg[]) {int sum=0,i,j;for(i=1; ...

  7. Python练习:求100以内的素数和

    描述 求100以内的素数之和并输出. 输入格式 该题目没有输入 输入输出示例   输入 输出 示例 1 无(红色字体不是OJ的输入) 说明:直接输出100以内的素数之和.(红色字体不是OJ的输出) 代 ...

  8. 实现100以内的素数输出(Python与C++对比)

    今天从链接http://www.2cto.com/kf/201302/187699.html中看到了Python实现100以内的素数输出的算法,颇受感触.尤其是被其中的Python的列表生成器的使用方 ...

  9. c#窗体应用程序:100以内的素数,每8个数为一行

    c#窗体应用程序:100以内的素数,每8个数为一行 1.窗体部分:放入一个label控件.(下面代码label的命名为label1) 2.代码部分: /// <summary>/// 窗体 ...

最新文章

  1. 一些Jquery操作
  2. jvm性能调优实战 - 40 百万级数据误处理导致的频繁Full GC问题优化
  3. 快速找到thtmlbUtil的定义位置
  4. Sharepoint学习笔记—Ribbon系列-- 5. 在Ribbon中添加新控件(针对用户自定义Tab)
  5. ❤️《大前端—了解与使用NodesJS》
  6. Pytorch---训练与测试时爆显存(out of memory)的一个解决方案(torch.cuda.empty_cache())
  7. ie浏览器打开aspx文件乱码_当IE浏览器打开页面出现乱码,我们该怎么办?
  8. npm加速器、github加速器
  9. 数据分析常用名词解释
  10. VS编程,WPF控件增加图片背景的一种方法
  11. 用python做一个好玩的数字炸弹游戏
  12. 视频直播声音不清晰的解决办法(小蜜蜂无线麦克风使用方式)
  13. matlab让legend横着排,echarts画一个饼图, orient: 'horizontal',图例横向排列,当图例比较多时,如何在第二排让图标一一对齐?...
  14. MongoDB 拆联查询
  15. 跟李宁老师做项目:小程序版网上商城(Node.js + Express + MySQL)-李宁-专题视频课程...
  16. 口袋妖怪letsgo服务器几点维护,精灵宝可梦LetsGo每日必做汇总 日常任务推荐
  17. Jetson Agx Xavier 通过手机连接网络
  18. 【墨者学院】WebShell文件上传漏洞分析溯源(第3题)
  19. 一张交货单多次POD以及多次开票
  20. 机动车c1科三考试语言灯光,科目三灯光模拟「语音+图解」,详细攻略送给你!...

热门文章

  1. 网络协议OSI、TCP/IP协议、Socket套接字和第三方AsyncSock的使用等解析
  2. Spring Boot 2 快速教程:WebFlux 快速入门(二)
  3. 10 个深恶痛绝的 Java 异常。。
  4. SpringBoot b2b2c 多用户商城系统(十五)Springboot整合RabbitMQ...
  5. Ether-channel 以太网通道
  6. HTC VIVE SDK 中的例子 hellovr_opengl 程序流程分析
  7. Apache漏洞修复
  8. 20151102adonet2
  9. Linux下用汇编输出Hello, world
  10. Jq-table最后一行添加样式