华为OD机试真题 JavaScript 实现【勾股数元组】【2022Q4 100分】,附详细解题思路

news/2024/11/28 21:43:34/

在这里插入图片描述

一、题目描述

如果三个正整数A、B、C ,A²+B²=C²则为勾股数 如果ABC之间两两互质,即A与B,A与C,B与C均互质没有公约数, 则称
其为勾股数元组。 请求出给定n~m范围内所有的勾股数元组。

二、输入描述

起始范围 1 < n < 10000 n < m < 10000

1
20

三、输出描述

ABC保证A<B<C 输出格式A B C 多组勾股数元组,按照A B C升序的排序方式输出。 若给定范围内,找不到勾股数元组时,输出Na。

3 4 5
5 12 13
8 15 17

四、解题思路

  1. 读取输入的起始范围,记为n和m;
  2. 创建一个列表lists,用于保存找到的勾股数元组;
  3. 遍历范围n到m之间的所有整数,记当前整数为i:
    • 在范围[i+1, m]内遍历所有整数,记当前整数为j:
    • 若满足check1(i, j, m),即i、j、(i²+j²)的平方根均为整数且不超过m,满足勾股数的条件:
    • 创建一个列表list,将i、j和(i²+j²)的平方根按升序添加到list中;
    • 将list添加到lists中;
  4. 遍历lists,记当前元组索引为idx:
    • 若满足check2(list.get(0), list.get(1), list.get(2)),即元组中的三个数存在公约数:
    • 从lists中移除当前元组;
    • 将idx重置为0;
    • 否则,递增idx;
  5. 遍历结束后,输出剩余的lists中的元组;

五、JavaScript算法源码

function calculate(n, m) {const lists = [];for (let i = n; i <= m; i++) {for (let j = i + 1; j <= m; j++) {if (check1(i, j, m)) {const list = [i, j, Math.sqrt(i * i + j * j)];list.sort((a, b) => a - b);lists.push(list);}}}let idx = 0;while (idx < lists.length) {const list = lists[idx];if (check2(list[0], list[1], list[2])) {lists.splice(idx, 1);idx = 0;} else {idx++;}}return lists;
}function check1(a, b, max) {const mul = a * a + b * b;const res = Math.sqrt(mul);const sub = Math.floor(res);return res * res === sub * sub && sub <= max && sub > b;
}function check2(a, b, c) {for (let i = 2; i < c; i++) {if ((a % i === 0 && b % i === 0) || (a % i === 0 && c % i === 0) || (b % i === 0 && c % i === 0)) {return true;}}return false;
}

六、效果展示

在这里插入图片描述


🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述


http://www.ppmy.cn/news/340034.html

相关文章

Mysql中explain的用法详解

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

Python内存管理与垃圾回收深度解析

Python的内存管理和垃圾回收是一项基础但至关重要的技术。理解Python如何管理内存可以帮助我们写出更优化、更高效的代码&#xff0c;同时也可以帮助我们更好地理解Python运行时的一些行为。在本文中&#xff0c;我们将深入探讨Python的内存管理和垃圾回收机制。 一、Python的…

20230612 set1打卡

哈希表理论基础 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

人工智能体系和实战指南

前言 人工智能是一个庞大的研究领域。虽然我们已经在人工智能的理论研究和算法开发方面取得了一定的进展&#xff0c;但是我们目前掌握的能力仍然非常有限。机器学习是人工智能的一个重要领域&#xff0c;它研究计算机如何模拟或实现人类的学习行为&#xff0c;以获取新的知识或…

ios实现wifi搜索连接_苹果IOS设备常见无线连接问题

由于苹果设备良好的操作体验&#xff0c;越来越多的家庭用户开始购置IPAD、IPhone、IPod Touch等苹果&#xff0c;它们都具备一个共同点&#xff1a;支持Wi-Fi连接&#xff0c;这无疑为广大用户连接互联网的提供了最大的便利&#xff0c;但与此同时&#xff0c;越来越多的无线连…

苹果手机连到电脑后找不到服务器,iPhone手机热点明明打开了,可是电脑就是连不上怎么办?...

解决方法一&#xff1a; 很有可能是网络连接的问题&#xff0c;先关闭iPhone手机的热点&#xff0c;然后再重新打开&#xff0c;然后重启电脑&#xff0c;再重新进行连接尝试一下。 解决方法二&#xff1a; iPhone手机的热点打开了&#xff0c;但是电脑连不上&#xff0c;还有可…

WiFi状态不存在 连不上无线网

最近遇到一个很烦的事情&#xff0c;就是笔记本电脑的WiFi老是突然就不见了那种&#xff0c;打开WLAN&#xff0c;任务栏的网络图标变成一个地球的图案&#xff0c;点开了是这个情况 点开网络和Internet设置&#xff0c;下图中红框圈中的部分甚至都没有显示 在系统服务里面也…

苹果8wifi找不到服务器,苹果8连不上wifi怎么办

苹果8连不上wifi的解决方法是&#xff1a; 1、移除iPhone8当前所连接的WIFI信号&#xff0c;之后再重新输入密码连接该网络信号。 2、在平时iPhone8上面发现无线网络无法连接时&#xff0c;也可以尝试请将手机关机重启一下&#xff0c;一般就可以恢复正常。 3、如果依然无法解决…