Sum All Primes - โจทย์ผิด

ข้อนี้โจทย์มีข้อผิดพลาดตรงเฉลยครับ
โจทย์ว่า ให้ 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:

พี่พึ่งแก้ไปเมื่อวาน
ตอนนี้น่าจะถูกแล้ว
ถ้าเจออีกฝากบอกละกัน

1 Likes