《趣学算法》阅读笔记(二)

14天阅读挑战赛

话不多说,我们接着上篇文章《趣学算法》阅读笔记(一),继续总结学习

1. 第一章 算法之美

1.3 哥德巴赫猜想的证明

哥德巴赫猜想:任一大于2的偶数,都可表示成两个素数之和。
验证:2000以内大于2的偶数都能够分解为两个素数之和。

class Main {public static void main(String[] args) {System.out.println(isPass(2000));}/*** 哥德巴赫猜想:任一大于2的偶数,都可表示成两个素数之和。* * @Title: isPass* @Description:验证:2000以内大于2的偶数都能够分解为两个素数之和。* @author: itbird* @date 2022年10月19日 下午8:42:52* @param n* @return boolean 时间复杂度: O((n^2)logn) 空间复杂度: O(N)*/public static boolean isPass(int n) {if (n <= 3) {return false;}// 4为第一个大于2的偶数for (int i = 4; i <= n; i = i + 2) {if (!isDecomposeForTwoPrime(i)) {return false;}}return true;}/*** 是否可以分解为两个素数只和* * @Title: isDecomposeForTwoPrime* @Description:* @author: itbird* @date 2022年10月20日 上午9:19:42* @param i* @return boolean 时间复杂度: O(nlogn) 空间复杂度: O(1)*/private static boolean isDecomposeForTwoPrime(int i) {for (int j = 2; j < i; j++) {if (isPrime(j) && isPrime(i - j)) {
//				System.out.println(j + "  " + (i - j));return true;}}return false;}/*** 是否为一个素数 ,1和本身* * @Title: isPrime* @Description:* @author: itbird* @date 2022年10月20日 上午9:23:01* @param j* @return boolean 时间复杂度: O(logn) 空间复杂度: O(1)*/private static boolean isPrime(int j) {for (int i = 2; i <= Math.sqrt(j); i++) {if (j % i == 0) {return false;}}return true;}
}

1.4 时间复杂度如何求取?

求解算法的时间复杂度的具体步骤是:

  • 找出算法中的基本语句:即算法中执行次数最多的那条语句,通常是最内层循环的循环体。
  • 计算基本语句的执行次数的数量级;
  • 用大Ο记号表示算法的时间性能。

例子1:O(1) 算法
此代码只需要执行一次,时间复杂度为O(1)。

int i = 1;
print("i = %d \n", i);

例子2:O(n) 算法
循环求和算法, 这个算法需要执行n次O(1)的打印操作,因此
在这里插入图片描述

for(int i=0; i<N; i++){printf("i = %d \n", i);
}

例子3: O(n^2)算法
嵌套循环求和算法,这个算法需要执行N*N此O(1)的打印操作,因此
在这里插入图片描述

for(int i=0; i<N; i++){for(int j=0; j<N; j++){printf("i = %d, j = %d \n", i, j);}
}

例子4: O(logN)算法
在while循环里面,每次都将 i 乘以 2,乘完之后,i 距离 n 就越来越近了。假设循环x次之后,i 就大于 n 了,此时这个循环就退出了,也就是说 2 的 x 次方等于 n,那么 x = log2n,也就是说当循环 log2n 次以后,这个代码就结束了。因此这个代码的时间复杂度为:O(logn)。

int i = 1;
while(i<n)
{i = i * 2;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/70322.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

趣学python编程答案_《趣学Python编程》习题总结

上周买了本书叫《趣学Python编程》&#xff08;英文名&#xff1a;Python for kids&#xff09;&#xff0c;昨天看完后把书后面的题都做了下。由于第1、2章没有习题&#xff0c;第13章及之后都是描写实例的章节&#xff0c;因此这个总结性的文章中只包含了第3-12章的习题答案。…

小鹅通课程下载(一)

【需求】 花钱买了小鹅通付费课程&#xff0c;想要下载到本地观看或者存档&#xff1f; 【问题】 直接下载视频会有aes-256加密&#xff0c;要自己通过m3u8找密钥用openssl解码 【解决方案】 &#xff08;仅用于windows系统&#xff09; 小鹅通exe运行工具&#xff0c;双击打…

GPT4官方联网功能和插件功能

chatgpt免费入口 http://chat.xutongbao.top https://mbd.baidu.com/newspage/data/landingsuper?context%7B%22nid%22%3A%22news_9764161741531547244%22%7D&n_type-1&p_from-1

mac微信备份位置macos手机微信备份的文件迁移走

mac微信备份位置 如果你没有更改过mac版微信的备份文件夹的位置的话&#xff0c;那么mac版微信备份的聊天记录被保存在电脑的【/User/用户/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/】 一个叫【Backup】的文件夹当…

One Chat for Mac(多功能聊天软件)

One Chat for Mac版,这款软件并不能直接进行聊天服务&#xff0c;但是One Chat Mac可以将一系列的聊天软件进行整合并拥有易于使用的用户界面和用户体验&#xff0c;并且提示通知全部都可以自定义。 测试系统&#xff1a; Macos10.14.6系统 One Chat for Mac版教程 下载完成…

这款应用,让Windows软件也能在Mac上使用起来

伴随着苹果秋季发布会的结束&#xff0c;苹果电脑近期也有了一些降级促销活动&#xff0c;我趁机入手了一台iMac台式&#xff0c;准备从Windows系统转投到Mac系统的怀抱中。 兴致勃勃用了几天后&#xff0c;我发现了一个大问题&#xff01;公司使用的财务统计软件&#xff0c;没…

拿去吧!27款MacBook软件推荐给你

1、ClipboardManager 历史剪粘板管理工具 一个能记录你的剪贴板的软件 人类的本质就是 ctrl c和ctrl v&#xff0c;当复制粘贴多了&#xff0c;自然而然需要一款管理工具 2、自动切换输入法 一个能根据打开应用&#xff0c;自动切换输入法的软件 以我举例&#xff1a;敲代…

Mac上超实用的6款软件,老用户都知道!

今天为大家带来的是6款超实用的Mac软件&#xff0c;让你不再走弯路。 第一款&#xff1a;Amphetamine 防休眠的利器 Amphetamine for mac是应用在Mac上的一款防休眠工具&#xff0c;可以自定义哪些程序运行时不休眠&#xff0c;做到自定义Mac睡眠时间&#xff0c;可以通过超级简…

Mac电脑到底该用什么下载软件?Folx苹果电脑专用

Mac电脑到底该用什么下载软件&#xff1f;我用过的下载管理器中,Folx可以说是数一数二的了&#xff0c;它简洁的界面具有非常浓烈的Mac风格。标签管理、BT搜索、Music集成等功能也是非常的实用。 而 Folx 5对于我&#xff0c;值得说道的就是它的下载管理功能。它能够帮助我非常…

Linux terminal 终端快捷键

Linux terminal 终端快捷键 文章目录 Linux terminal 终端快捷键1. 常用快捷键2. 移动光标3. 编辑命令3. Bang(!)命令4. 控制命令 1. 常用快捷键 ctrl左右键: 在单词之间跳转ctrla: 跳到本行的行首ctrle: 跳到页尾Ctrlu&#xff1a;删除当前光标前面的文字 &#xff08;还有剪…

Windows Terminal 常用快捷键

Windows Terminal 常用快捷键 快捷键使用CtrlShift数字打开新控制台CtrlAlt数字切换控制台ShiftAlt/横向打开新控制台ShiftAlt_/-纵向打开新控制台ShiftAlt方向键控制控制台字体大小CtrlShiftw关闭当前控制台Alt方向键在本标签内切换控制台

Android 桌面快捷方式

Android 快捷方式 使用方式 ShortcutUtils.getInstance().addShortcut(this, MainActivity2.class, liveBundle, "live_Id", "看直播", "看直播", R.drawable.live).addShortcut(this, MainActivity2.class,vodBundle, "vod_Id", &qu…

快捷方式管理软件推荐

文章目录 前言一、Rolan1、简介&#xff1a;2、功能&#xff1a;3、使用&#xff1a; 二、Maye1、简介&#xff1a;2、界面&#xff1a; 三、Lily1、简介&#xff1a;2、功能&#xff1a;3、界面&#xff1a; 四、音速启动一、简介&#xff1a;二、界面&#xff1a; 五、Luink一…

如何在Linux桌面上创建快捷方式?

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 一般而言&#xff0c;Linux环境下在命令行上通过软件包管理工具安装软件&#xff0c;或者从网站直接下载已经编译好的二进制软件包&#xff0c;软件安装好之后不会在桌面上创建快捷方式。接下来如果想要在桌…

Android桌面图标快捷方式

一、背景 长按桌面图标实现快捷方式最早是iOS提供的功能,而Android最早在Android 7.1版本也提供了对这方面的支持,于是在短时间内,像微信,支付宝,头条等流量级应用都提供了这方面的支持,如下图。 现在,长按桌面图标快捷方式已经是很成熟的功能,实现上也比较简单,主…

神州数码与神州控股、神州信息共同主办首届技术年会,透露出什么信号?

11 月 8 日&#xff0c;神州控股、神州数码集团、神州信息共同主办“数字中国 2019 技术年会”&#xff0c;聚焦云计算、大数据、人工智能、区块链、5G 等前沿技术创新与应用实践&#xff0c;众多领域的技术专家展开了深度交流&#xff0c;共同探讨数字时代的技术创新与协同发展…

微软英伟达领投2万张H100打造全球最强超算一跃成为OpenAI强劲敌

OpenAI六大劲敌之一Inflection AI&#xff0c;最新融资13亿美元&#xff01; 这家由DeepMind创始人之一创立的人工智能初创公司&#xff0c;从微软、英伟达、和3位亿万富翁&#xff08;Reid Hoffman、盖茨和Eric Schmidt&#xff09;获得了融资。 Inflection AI发文称&#xf…

中庸(全集) 读后感

中庸&#xff08;全集&#xff09; 读后感 作者&#xff1a;唐品主编 《中庸》原为记载古代典章制度的书籍——《礼记》中的一篇&#xff0c;相传为战国子思所作。它是古代儒家典籍名篇&#xff0c;被南宋理学家朱熹列为“四书”之一。它作为平民哲学&#xff0c;其核心是修…