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