Mencari KPK dan FPB dengan JavaScript

Sesuai judul, ini adalah kode javascript untuk mencari KPK (kelipatan persekutuan terkecil) DAN FPB (faktor persekutuan terbesar) dari dua bilangan atau lebih. Isian dinamis, dengan button tambah, button hapus, button hitung dan button reset.




Hasil

<!DOCTYPE html>  
 <html lang="id">  
   <head>  
     <meta charset="UTF-8">  
     <meta name="viewport" content="width=device-width, initial-scale=1.0">  
     <title>FPB dan KPK</title>  
     <style>  
       body { font-family: Arial, sans-serif; }  
       .jarakisian { margin-bottom: 10px; }  
     </style>  
   </head>  
   <body>  
   <h1>Mencari FPB dan KPK</h1>  
   <div id="inputan">  
     <div class="jarakisian">  
       <input type="number" class="isian" placeholder="Masukkan angka" required>  
     </div>  
     <div class="jarakisian">  
       <input type="number" class="isian" placeholder="Masukkan angka" required>  
     </div>  
   </div>  
   <button id="tambahin">➕</button>  
   <br><br>  
   <button id="hitungin">Hitung</button>  
   <br><br>  
   <button id="resetin">Reset</button>  
   <h2>Hasil</h2>  
   <div id="hasilnya"></div>  
     <script>  
       function addInputGroup() {  
         const isianInput = document.getElementById('inputan');  
         const isianBaru = document.createElement('div');  
         isianBaru.className = 'jarakisian';  
         isianBaru.innerHTML = `  
           <input type="number" class="isian" placeholder="Masukkan angka" required>  
           <button class="del-btn">❌</button>  
         `;  
         isianInput.appendChild(isianBaru);  
         isianBaru.querySelector('.del-btn').addEventListener('click', function() {  
           isianInput.removeChild(isianBaru);  
         });  
       }  
       document.getElementById('tambahin').addEventListener('click', addInputGroup);  
       document.getElementById('hitungin').addEventListener('click', function() {  
         const inputs = document.querySelectorAll('.isian');  
         const numbers = Array.from(inputs).map(input => parseInt(input.value)).filter(num => !isNaN(num));  
         if (numbers.length < 1) {  
           alert('Silakan masukkan setidaknya satu angka.');  
           return;  
         }  
         const fpb = cariFPB(numbers);  
         const kpk = cariKPK(numbers);  
         document.getElementById('hasilnya').innerHTML = `FPB: ${fpb} <br> KPK: ${kpk}`;  
       });  
       function cariFPB(numbers) {  
         const fpb = (a, b) => b === 0 ? a : fpb(b, a % b);  
         return numbers.reduce((acc, curr) => fpb(acc, curr));  
       }  
       function cariKPK(numbers) {  
         const kpk = (a, b) => (a * b) / cariFPB([a, b]);  
         return numbers.reduce((acc, curr) => kpk(acc, curr));  
       }  
     document.getElementById('resetin').addEventListener('click', function() {  
     const isianInput = document.getElementById('inputan');  
     const inputs = isianInput.querySelectorAll('.isian');  
     inputs.forEach(input => {  
       input.value = '';  
     });  
     while (inputs.length > 2) {  
       isianInput.removeChild(inputs[inputs.length - 1].parentNode);  
     }  
     document.getElementById('hasilnya').innerHTML = '';  
   });  
     </script>  
   </body>  
 </html>  

Komentar