Berikut ini adalah pertanyaan dari rivki2327 pada mata pelajaran TI untuk jenjang Sekolah Menengah Atas
Jawaban dan Penjelasan
Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.
Kode Program Java
import java.util.Scanner;
class Pembagi {
private static Scanner in = new Scanner(System.in);
// Method untuk meminta masukan berupa angka
private static int inputAngka(String teks, boolean closeScanner) {
int tmp = 0;
try {
System.out.print(teks);
tmp = in.nextInt();
} catch (Exception e) {
System.out.println("Terjadi kesalahan.");
} finally {
if (closeScanner) in.close();
}
return tmp;
}
// PROGRAM UTAMA
public static void main(String args[]) {
String pembagiPart1 = "", pembagiPart2 = "";
int bilangan = inputAngka("Input sebuah angka: ", true);
// Mencari angka yang habis membagi bilangan
int i = 1;
do {
// Jika bilangan % i == 0, i adalah pembagi
if (bilangan % i == 0) {
// Masukkan i ke string pembagiPart1
pembagiPart1 += i + " ";
// Masukkan bilangan/i ke string pembagiPart2
if (i != bilangan/i)
pembagiPart2 = " " + (bilangan/i) + pembagiPart2;
}
i++;
} while (i <= Math.sqrt(bilangan));
// OUTPUT
System.out.println("========================================");
System.out.println("Angka yang dapat membagi " + bilangan + " tanpa sisa adalah:");
// Konkatenasi/Gabungkan string pembagiPart1 dan pembagiPart2
// dan ganti spasi antar angka dengan ", "
System.out.println((pembagiPart1.trim() + pembagiPart2).replace(" ", ", "));
}
}
________________
Pembahasan
Pertama, kita rancang algoritma atau dasar pemikirannya terlebih dahulu.
Untuk mencari bilangan yang habis membagi sebuah bilangan lain, katakanlah , kita dapat menggunakan operator modulo (%), dengan perulangan dari nilai 1 hingga bilangan . Untuk setiap yang dievaluasi, jika , maka habis membagi.
Namun, metode tersebut masih dapat dioptimasi lagi, karena untuk setiap yang habis membagi, pasti berpasangan dengan.
Misalkan adalah bilangan kuadrat sempurna sehingga dapat dinyatakan oleh. Faktor dari yang kurang daripasti berpasangan dengan faktor dariyang lebih dari. Jadi, hanya dibutuhkan perulangan hingga bilangan bulat terbesar yang kurang dari atau sama dengan . Oleh karena itu, dalam hal efisiensi algoritma, akan lebih baik menggunakan metode ini, seperti yang digunakan pada program di atas.
Namun, perlu diperhatikan bahwa agar outputnya terurut dari angka terkecil hingga terbesar, kita memerlukan “teknik khusus”. Silahkan mencermati program tersebut.
Contoh hasil eksekusi program dapat dilihat pada gambar yang dilampirkan. Terdapat 3 contoh kasus, yaitu untuk masukan bilangan 30 (seperti contoh pada soal), 3000, dan 4096.
Semoga dengan pertanyaan yang sudah terjawab oleh henriyulianto dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.
Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact
Last Update: Thu, 20 Oct 22