Rosetta Code Challenges - Factors of a Mersenne number

Tell us what’s happening:

Yes these strings are not returning I believe I returned maybe one but I don’t know how to return multiple strings. Here is the problem I keep receiving , 3. check_mersenne(3) should return the string M3 = 2^3-1 is prime.
Failed:4. check_mersenne(23) should return the string M23 = 2^23-1 is composite with factor 47.
Failed:5. check_mersenne(929) should return the string M929 = 2^929-1 is composite with factor 13007.
Is there any example on how to return strings in Free Code Camp.

Your code so far

function modPow(base, exponent, modulus) {
    let result = 1;
    base = base % modulus;
    while (exponent > 0) {
        if (exponent % 2 === 1) {
            result = (result * base) % modulus;
        }
        exponent = Math.floor(exponent / 2);
        base = (base * base) % modulus;
    }
    return result;
}

function findFactorOfMersenneNumber(P) {
    const mersenneNumber = (1 << P) - 1; // 2^P - 1
    const sqrtMersenne = Math.sqrt(mersenneNumber);

    for (let k = 1; ; k++) {
        const q = 2 * k * P + 1;
        if (q > sqrtMersenne) {
            break;
        }
        if (q % 8 === 1 || q % 8 === 7) {
            if (modPow(2, P, q) === 1) {
                return q;
            }
        }
    }

    return null; // No factor found
}

function check_mersenne(P) {
    if (P < 2) {
        return `M${P} = 2^${P}-1 is not a valid Mersenne number.`;
    }

    const factor = findFactorOfMersenneNumber(P);
    if (factor) {
        return `M${P} = 2^${P}-1 is composite with factor ${factor}.`;
    } else {
        return `M${P} = 2^${P}-1 is prime.`;
    }
}

// Example usage:
console.log(check_mersenne(3));   // M3 = 2^3-1 is prime.
console.log(check_mersenne(23));  // M23 = 2^23-1 is composite with factor 47.
console.log(check_mersenne(929)); // M929 = 2^929-1 is composite with factor 13007.

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0

Challenge Information:

Rosetta Code Challenges - Factors of a Mersenne number

you’re already returning a string here but the string should not have a period at the end

Tell us what’s happening:

I got all test to pass except for one the final test will not run . Is there a way you can look over my code and explain to me where I went wrong and break it down for me in laymen terms.

Your code so far

function check_mersenne(p) {
    // Calculate the Mersenne number
    const mersenneNumber = BigInt(Math.pow(2, p) - 1);

    // Function to check if a number is prime
    function isPrime(n) {
        if (n <= 1n) return false;
        if (n <= 3n) return true;
        if (n % 2n === 0n || n % 3n === 0n) return false;
        for (let i = 5n; i * i <= n; i += 6n) {
            if (n % i === 0n || n % (i + 2n) === 0n) return false;
        }
        return true;
    }

    // Check if the Mersenne number is prime
    if (isPrime(mersenneNumber)) {
        return `M${p} = 2^${p}-1 is prime`;
    } else {
        // Find a factor of the Mersenne number
        for (let i = 2n; i * i <= mersenneNumber; i++) {
            if (mersenneNumber % i === 0n) {
                return `M${p} = 2^${p}-1 is composite with factor ${i}`;
            }
        }
        return `M${p} = 2^${p}-1 is composite`;
    }
}

// Test the function
console.log(check_mersenne(3));   // M3 = 2^3-1 is prime.
console.log(check_mersenne(23));  // M23 = 2^23-1 is composite with factor 47.
console.log(check_mersenne(929)); // M929 = 2^929-1 is composite with factor 13007.

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0

Challenge Information:

Rosetta Code Challenges - Factors of a Mersenne number