首页 > web前端 > js教程 > 正文

JavaScript趣题:质数之差

黄舟
发布: 2017-02-04 15:09:44
原创
1587人浏览过

质数不是有规律分布的,这从两个相邻质数的差就能得到体现。
2和3相差1,3和5相差2,5和7的确也是相差2,但7和11却相差了4。
乍看之下,你的确找不到规律,事实也是如此。
在2到50之间,我们可以找到如下的相邻的差为2的质数对:
3-5, 5-7, 11-13, 17-19, 29-31, 41-43
很明显,满足上面条件的第一对质数是3-5。
那么,更通用的情况,从m到n之间,差距为g的第一对相邻质数是多少?
函数原型如下:
gap(g , m , n)

例子如下:

gap(2, 5, 7) // --> [5, 7]  
gap(4, 130, 200) // --> [163, 167]  
gap(2, 5, 5) // --> null
登录后复制

请注意,一定要是符合g差的第一对相邻质数。
如果找不到,返回null。
对于这一类和质数打交道的题目,咋们都无可避免地要引入一个判断质数的函数,有时我也不禁YY,要是能把这个函数纳入ECMA标准,那该多爽!
但是考虑到通用性,这个isPrime方法确实应用场景窄了点,不适合绑定在Number.prototype上面,于是就只能一次次地做题目时扒下来粘贴了,汗^_^。
这个题目本身没什么难度,一趟循环,遇到符合条件的质数对就return,没有符合条件的返回null,就这样了!

猫眼课题宝
猫眼课题宝

5分钟定创新选题,3步生成高质量标书!

猫眼课题宝 85
查看详情 猫眼课题宝
Number.prototype.isPrime = function(){    
    var maxFactor = Math.floor(Math.sqrt(this));    
        for(var i=2;i<=maxFactor;i++){    
            if(this % i === 0){    
                return false;    
            }    
        }    
    return true;    
};    
  
function gap(g, m, n) {  
    var firstPrime;  
    var secondPrime;  
    for(var i=m;i<=n;i++){  
        if(i.isPrime()){  
            firstPrime = secondPrime;  
            secondPrime = i;  
            if(secondPrime - firstPrime === g){  
                return [firstPrime,secondPrime];  
            }   
        }  
    }  
    return null;  
}
登录后复制

以上就是 JavaScript趣题:质数之差的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关标签:
java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号