[Codewars]-Gap in Primes

在 Codewars 的 Gap in Primes 题目中,目标是在整数 m 和 n 之间找到所有间隔为 g 的素数对,且这对素数之间没有其他素数。解题思路包括循环查找素数,存储素数,检查连续素数之间的差距。当找到符合条件的素数对时返回小的那个。判断素数的方法是检查在 (2, √n) 范围内的数是否能整除 n,以此提高效率。" 52301612,5659719,MFC对话框绘图实践,"['MFC', 'VC++', '对话框开发']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Gap in Primes

题目:
  • Gap in Primes题目
  • 简单说一下题目,在给定的整数m,n之间,找出所有间隔为g的素数对,而且这个素数对之间没有其他素数,返回小的那个素数对。gap(g,m,n)
  • 举个例子:

    • gap(2,2,50)
    • 2和50之间,间隔为2的素数对有3-5, 5-7, 11-13, 17-19, 29-31, 41-43,应该返回[3,5]
    • 如果找不到则返回null
    思路:
    • 1.从m到n循环
    • 2.找到素数并储存起来记为temp
    • 3.继续找下一个素数k,如果ktemp的差距为g,则返回[temp,k],否则继续执行第2、3步
判断素数的思路:
  • 判断素数的范围只需要在 22 ( 2 , 2 ) 之间即可
  • 为什么是 2 2
    • 是否是素数是用比它小的数去除它看能否出尽来判断的,而如果能出尽的话那么除数是成对存在的,比如22=2*11,2和11就是一对,而这一对只要判断一个就可以了,因此这种除数判断的下界为2,而上界为被除数开根号。
解答:
function gap(g, m, n) {
    // your code
    var result = null;
    var temp = []
    for(var k = m ; k <= n ; k++){
        if( isPrimeNumber(k) ){
            if(temp.length >= 1){
                if( k - temp[0] == g){
                    result = [temp[0],k]
                    break
                }else{
                    temp[0] = k
                }
            }else{
                temp.push(k)
            }


        }
    }
    // 判断素数
    function isPrimeNumber(num){
        for(var i = 2 ; i*i <= num ; i ++){
            if( num%i==0){
                return false
                break
            }
        }
        return true
    }
    return result
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值