判断是否为素数

123 阅读1分钟
/**
 * 判断是否为素数
 * 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
 * 只能被1和它本身整除
 *
 */

/**
 * 两个计算因子
 * 计算因子的个数是否为2,是2 是素数
 * @param a
 */
function isPrime1(a) {
    let num = 0;
    for (let i = 1; i <=a ; i++) {
        if (a%i === 0) {
            num++
        }
    }
    return num === 2
}

/**
 * 因子值和等于该数字加1
 * @param a
 */
function isPrime2(a) {
    let sum = 0;
    for (let i = 1; i <=a ; i++) {
        if (a%i === 0){
            sum +=i
        }
    }
    let target = a+1
    return target === sum;
}



/**
 * 通过一个开关来控制是否是素数 假设 flag = true
 * @param a
 */
function isPrime3(a) {
    for (let i = 2; a>i ; i++) {
        if (a%i === 0) {
            return false
        }
    }
    return a>1
}

console.log(isPrime2(7))