`

js快速求出连续数字之和为指定数字的所有情况

阅读更多

题目:

  要求写出这样一个函数,给定一个大于2的数字r,经过此函数处理之后能够输出所有连续数字和为r的情况。

例如,给定数字15,则最终输出三个组合:[7,8],[4,5,6],[1,2,3,4,5];

先给出我写的代码吧,后面再给出分析:

    function add(r) {
        var resArr = []; //结果数组,存放连续数字的起始数字和结尾数字
        for (var q = 2; 2 * r / q - q >= 1; q++) { //q带表连续数字的个数
            var n = (2 * r / q - q + 1) / 2; //n为起始位置(n+q-1为结束位置)
            n === ~~n && resArr.push([n, n + q - 1]); //如果n为整数则存放此次结果
        }
        return resArr;
    }

 

分析:

首先我们假设在这串连续的数字中:

  起始位置的数字为n;

  总共的数字个数为Q;

那么我们可以得出:

  结束位置的数字为n+Q-1;

我们知道连续数字的和=(起始位置数字+结束位置数字)/2*总的数字个数

因此可得:

  r=(n+n+Q-1)/2*Q;

最终我们可以得到:

  起始位置的数字n=(2r/Q-Q+1)/2;

因为n是大于或等于1的,因此:

  2r/Q-Q>=1;

在以上的分析中:

  数字个数Q是不定的,我们根本不知道,但是我们知道Q最小为2,并且知道2r/Q-Q必须大于或等于1;

因此我们可以将Q可能的所有值进行遍历,从2开始遍历,遍历条件为2r/Q-Q>=1,Q每次自加1;

我们可以在循环当中根据r和Q得出起始位置n和结束位置n+Q-1;

附上草稿:

如果大家有更好的思路可以互相交流下

  • 大小: 1.3 MB
  • 大小: 11.5 KB
分享到:
评论

相关推荐

    JavaScript实现找出数组中最长的连续数字序列

    关于如何用JavaScript实现找出数组中最长的连续数字序列,以下是一些重要的知识点。 首先,需要理解连续数字序列的定义:在一个整数序列中,连续数字是指按数值顺序排列,且数值相邻的数字序列。例如,序列[1, 2, 3...

    JQ不断增加滚动的数字

    对于数字滚动,我们需要改变`innerHTML`属性,并指定一个适当的动画时长,例如1000毫秒。 5. **定时器**:为了使数字不断滚动,我们可以使用`setInterval()`函数来定期调用上述动画函数。设置合适的间隔时间,如每...

    【JavaScript源代码】vue全局实现数字千位分隔符格式.docx

    在Vue.js中,为了使大数字更易于阅读,通常会使用千位分隔符格式化。这涉及到在数字字符串中插入逗号,以便每三位数字一组进行分隔。在提供的文档中,我们看到一个名为`numberToCurrency.js`的文件,它包含了一个名...

    文本框只能输入 数字,小数点,减号 字符的正则表达式

    然而,这仅仅限制了单个字符的输入,但实际中我们可能还需要考虑连续输入的情况,比如不允许连续的减号或者小数点。这时,我们需要使用否定前瞻断言(Negative lookahead assertion),确保某个模式不被跟随。例如,...

    仿支付宝数字连续变动

    【仿支付宝数字连续变动】是一种常见的用户界面设计技巧,它在金融、电商等应用中尤为常见,例如在显示账户余额、交易金额等实时变化的数值时。这种效果能够吸引用户的注意力,提供更直观的视觉反馈,使用户感受到...

    HTML5数字雨代码

    这里定义了一个`<canvas>`元素,并为其指定了一个ID为“q”。`<canvas>`元素是HTML5中新增的一个用于图形渲染的标签,它本身并不具备任何外观,所有的绘制工作都需要通过JavaScript来进行。 #### 三、设置Canvas...

    javascript 写的数字formater,千位分割

    在给定的【标题】"javascript 写的数字formater,千位分割"和【描述】中,我们可以推断出这个项目提供了一个JavaScript函数,用于实现数字的千位分隔和自定义小数位数的处理。 在JavaScript中,数字格式化的实现通常...

    jquery数字跳动插件Animate Number.zip

    其中,“jQuery数字跳动插件AnimateNumber”是一款专为实现数字动态变化而设计的工具,它为开发者提供了更加灵活和丰富的动画效果。本文将深入探讨这款插件的功能、使用方法以及背后的编程原理。 AnimateNumber插件...

    基于js+css制作404数字跳动错误页面.zip

    例如,可以使用关键帧动画(@keyframes)来创建数字跳动的效果,通过指定不同时间点的样式变化,让数字在一段时间内呈现出连续的动态效果。 接下来,提到的“jQuery”是一个流行的JavaScript库,它简化了JavaScript...

    jQuery自定义数字滚动效果代码

    "js"目录下的文件包含了实现数字滚动效果的JavaScript代码。在jQuery中,我们可以使用`.animate()`方法来创建动画效果。以下是一个简单的示例: ```javascript $(document).ready(function() { var $digit = $('#...

    用js解决数字不能换行问题

    为了解决这个问题,我们可以利用JavaScript(js)来实现数字的强制换行。本文将详细探讨这个问题,并提供一个具体的JavaScript函数示例。 首先,我们需要理解为什么数字不会自动换行。在CSS规范中,连续的数字被视...

    jQuery在设定范围随机抽取数字.zipzip

    jQuery是一个广泛应用于Web开发的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画设计和Ajax交互。在这个“jQuery在设定范围随机抽取数字”的主题中,我们将深入探讨如何利用jQuery来生成指定范围...

    js限制文本框只能输入数字(正则表达式).docx

    JavaScript中的正则表达式是用于处理字符串的强大工具,尤其在验证用户输入方面。在这个文档中,我们将探讨如何使用正则表达式限制文本框(input框)只允许用户输入数字。 首先,有两类创建正则表达式的常见方法: 1....

    javascript入门笔记

    4、1997年 网景 将Javascript 1.1 提供给了ECMA(欧洲计算机制造商联合会),ECMA 获取了 JS 的核心,称之为 ECMA Script (ES) 完整的JS组成: 1、核心(ES) 2、文档对象模型(Document Object Model) - DOM 允许让 ...

    JS数字抽奖游戏实现方法

    总之,JS数字抽奖游戏实现方法不仅涉及到基本的JavaScript编程技巧,如事件处理、DOM操作和定时器的使用,还涵盖了更深层次的编程思想,比如函数式编程和模块化设计。该实现方法提供了一种简单的抽奖游戏的解决方案...

    点击左右箭头实现数字增加和减少

    - **应用场景**:在需要展示连续但又有限的数据集时非常有用,如音乐播放列表的循环播放、图像幻灯片的自动循环展示等。 #### 6. 页面布局与样式 - **核心概念**: - **`<font>`标签**:虽然这个标签已被废弃,但...

    JavaScript 项目-atrament.js.zip

    JavaScript 项目-atrament.js.zip 是一个专注于JavaScript的开源画板工具,它的核心特性是体积小巧,但功能强大。在JavaScript领域,这样的轻量级库往往受到开发者们的欢迎,因为它们能够快速集成到项目中,且对性能...

    JavaScript实现列出数组中最长的连续数

    在给定的编程问题中,任务是找到一个无序整数数组中的最长连续数字序列。提供的JavaScript函数`maxSequence`实现了这一功能。该函数接受两个参数:`array`(待处理的整数数组)和`step`(序列的步长,可选,默认为1...

    collectjs用于处理数组和对象的便利并且无依赖的JS库

    collect.js是一个轻量级、无依赖的JavaScript库,专门为处理数组和对象提供了一系列便利的操作方法。这个库旨在简化JavaScript中的数据操作,提高开发效率,尤其在处理大量数据时,能显著提升代码的可读性和可维护性...

    正则之数字

    在标题“正则之数字”中,我们聚焦于如何使用正则表达式来验证和处理与数字相关的各种情况。下面将详细介绍这个主题,并涵盖描述中提到的数位、字符类型、正负数以及英文字母等知识点。 1. **数位**: 在正则...

Global site tag (gtag.js) - Google Analytics