ข้อนี้โจทย์มีข้อผิดพลาดตรงเฉลยครับ
โจทย์ว่า ให้ sum จำนวนเฉพาะทั้งหมด ที่มีค่า น้อยกว่าหรือเท่ากับ num
เช่น ถ้า num = 10 ก็ให้หาจำนวนเฉพาะซึ่งจะได้คือ
arr = [2, 3, 5, 7]
แล้ว sum = 17
แต่โจทย์บอก ต้องตอบว่า 7
ซึ่งถ้ามองจากความเป็นไปในการอาจเขียนผิด ก็อาจจะบอกได้ว่า ให้หาตัวสุดท้ายของลำดับนั้น
ก็คือ ตัวท้ายของ arr = 7 แต่ !! ก็ไม่ถูก
ข้อนี้ ผม return sum = 17 ได้คำตอบคือถูก นั่นแปลว่า เขียนผิด เอา Sum จริงๆ และโจทย์เขียนผิด ต้องเป็น ตอบ 17
และ
sumPrime(977)
ผมรันออกมาได้ ผลรวม 73156 ยังไงก็ไม่มีทางได้ 3156
แถมถ้าเอาแค่ตัวท้าย ก็จะได้แค่ 977 อีกต่างหาก
ส่วนพอรันออกมาแล้ว ผ่านฉลุย นั่นแปลว่า คำตอบจริงๆ ต้องได้ 73156
แต่ โจทย์ตกเลข 7 ไป
function sumPrimes(num) {
// isPrime Function
function isPrime(num) {
for ( var i = 2; i < num; i++ ) {
if ( num % i === 0 ) {
return false;
}
}
return true;
}
// find all prime
var arr = [2];
for ( var i = 3; i <= num; i+=2 ) {
if ( isPrime(i) ) {
arr.push(i);
}
}
console.log(arr);
// sum arr
let sum = 0;
for (let i=0;i<arr.length;i++){
sum += arr[i];}
console.log(arr[arr.length-1])
console.log(sum)
return sum;
}
console.log(
sumPrimes(10));
console.log(sumPrimes(977));
**ข้อมูลเบราว์เซอร์ของคุณ:**
ตัวแทนผู้ใช้คือ: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36
Challenge: Sum All Primes
ไปสู่ the challenge: