Nomor Armstrong dalam Program JAVA Menggunakan For Loop
⚡ Ringkasan Cerdas
Angka Armstrong sama dengan jumlah digitnya sendiri yang dipangkatkan dengan jumlah digitnya, dan kedua Java Program-program di bawah ini memeriksa satu nilai dan mencantumkan setiap angka Armstrong di bawah seribu.

Apa itu Nomor Armstrong?
Dalam Bilangan Armstrong, jumlah pangkat masing-masing digit sama dengan bilangan itu sendiri.
Dengan kata lain persamaan berikut akan berlaku benar
xy..z = xn + yn+.....+ zn
n adalah jumlah digit dalam bilangan
Misalnya ini adalah 3 digit nomor Armstrong
370 = 33 + 73 + 03 = 27 + 343 + 0 = 370
Contoh Armstrong Numbers
0, 1, 4, 5, 9, 153, 371, 407, 8208, etc.
Setiap nilai satu digit dari 0 hingga 9 memenuhi aturan tersebut dengan mudah, karena angka satu digit yang dipangkatkan satu akan menghasilkan dirinya sendiri. Himpunan lengkap angka Armstrong tiga digit adalah 153, 370, 371, dan 407, sedangkan 1634, 8208, dan 9474 adalah anggota empat digitnya. Para matematikawan juga menyebut nilai-nilai ini sebagai angka narsistik, karena masing-masing angka tersebut mereproduksi dirinya sendiri dari digit-digitnya sendiri.
Mari kita tulis ini dalam sebuah program:
Bagaimana Algoritma Bilangan Armstrong Bekerja
Sebelum membaca kode, ada baiknya melihat perhitungan yang diulang oleh kedua program tersebut. Pemeriksaan hanya membutuhkan tiga operasi: menghilangkan digit terakhir, memangkatkannya dengan pangkat yang dibutuhkan, dan mengurangi angka satu tempat desimal.
- Salin input ke dalam file kerja. variabel sehingga nilai aslinya tetap ada untuk perbandingan akhir.
- Ambil angka terakhir dengan operator modulo,
digit = tempNumber % 10. - Pangkatkan angka tersebut dengan jumlah digit dan tambahkan ke total yang sedang berjalan.
- Hilangkan angka terakhir pada pembagian bilangan bulat,
tempNumber /= 10. - Ulangi hingga variabel kerja mencapai 0, lalu bandingkan total kumulatif dengan angka awal.
Menjalankan langkah-langkah tersebut sebanyak 153 kali menghasilkan trace di bawah ini. Setiap nilai dalam tabel dicetak oleh program pertama, sehingga output dapat dicocokkan baris demi baris saat mempelajari perulangan.
| Lulus | Nomor sementara | angka | digitCubeSum |
| 1 | 153 | 3 | 27 |
| 2 | 15 | 5 | 152 |
| 3 | 1 | 1 | 153 |
| Exit | 0 | - | 153 sama dengan 153, jadi 153 adalah Bilangan Armstrong. |
Satu keterbatasan penting. Kedua program tersebut mengalikan angka dengan dirinya sendiri tiga kali, yang merupakan pangkat yang benar hanya jika input memiliki tepat tiga digit. Aturan umumnya adalah memangkatkan setiap digit dengan pangkat n, di mana n adalah jumlah digit, sehingga nilai empat digit seperti 8208 membutuhkan pangkat keempat dan akan terlewatkan oleh kode berbasis kubus. Menghitung digit terlebih dahulu dan memangkatkan setiap digit dengan pangkat tersebutlah yang mengubah rutinitas tersebut menjadi pengujian umum.
Setelah perhitungan aritmatika selesai, program pertama menerapkannya pada satu nilai yang telah ditentukan sebelumnya.
Java Program untuk memeriksa apakah suatu bilangan adalah Nomor Armstrong
Kelas di bawah ini menyimpan kandidat di inputArmstrongNumber dan mencetak variabel kerja pada setiap proses, yang membuat Java Loop yang mudah diikuti di konsol.
//ChecktempNumber is Armstrong or not using while loop package com.guru99; public class ArmstrongNumber { public static void main(String[] args) { int inputArmstrongNumber = 153; //Input number to check armstrong int tempNumber, digit, digitCubeSum = 0; tempNumber = inputArmstrongNumber; while (tempNumber != 0) { /* On each iteration, remainder is powered by thetempNumber of digits n */ System.out.println("Current Number is "+tempNumber); digit =tempNumber % 10; System.out.println("Current Digit is "+digit); //sum of cubes of each digits is equal to thetempNumber itself digitCubeSum = digitCubeSum + digit*digit*digit; System.out.println("Current digitCubeSum is "+digitCubeSum); tempNumber /= 10; } //check giventempNumber and digitCubeSum is equal to or not if(digitCubeSum == inputArmstrongNumber) System.out.println(inputArmstrongNumber + " is an Armstrong Number"); else System.out.println(inputArmstrongNumber + " is not an Armstrong Number"); } }
Kompilasi dan jalankan kelas dari direktori root proyek. Karena file tersebut mendeklarasikan package com.guru99, itu harus diletakkan di tempat yang sesuai com/guru99 folder, atau runtime melaporkan kesalahan kelas tidak ditemukan. Mengubah nilai pada inputArmstrongNumber Hanya satu baris yang dibutuhkan untuk menguji kandidat lain.
Keluaran
Current Number is 153 Current Digit is 3 Current digitCubeSum is 27 Current Number is 15 Current Digit is 5 Current digitCubeSum is 152 Current Number is 1 Current Digit is 1 Current digitCubeSum is 153 153 is an Armstrong Number
Memeriksa satu nilai dalam satu waktu berguna untuk tracNamun, logika yang sama berlaku untuk seluruh rentang dengan cara membungkusnya.ping dalam lingkaran luar.
Java Program untuk Mencetak angka Armstrong dari 0 hingga 999
Versi kedua mempertahankan bagian dalam yang identik. while perulangan dan menambahkan for jalur melingkar yang melintasi lapangan. Perhatikan bahwa digitCubeSum Nilainya diatur ulang ke 0 di bagian atas setiap proses, yang merupakan detail yang sering dilupakan oleh para pemula.
//ChecktempNumber is Armstrong or not using while loop package com.guru99; public class ArmstrongNumber { public static void main(String[] args) { int tempNumber, digit, digitCubeSum; for (int inputArmstrongNumber = 0; inputArmstrongNumber < 1000; inputArmstrongNumber++) { tempNumber = inputArmstrongNumber; digitCubeSum = 0; while (tempNumber != 0) { /* On each iteration, remainder is powered by thetempNumber of digits n */ digit = tempNumber % 10; //sum of cubes of each digits is equal to thetempNumber itself digitCubeSum = digitCubeSum + digit * digit * digit; tempNumber /= 10; } //check giventempNumber and digitCubeSum is equal to or not if (digitCubeSum == inputArmstrongNumber) System.out.println(inputArmstrongNumber + " is an Armstrong Number"); } } }
Keluaran
0 is an Armstrong Number 1 is an Armstrong Number 153 is an Armstrong Number 370 is an Armstrong Number 371 is an Armstrong Number 407 is an Armstrong Number
Daftar tersebut berhenti pada angka 1 dan tidak berlanjut hingga 9 karena pangkat tiga dari satu angka hanya cocok dengan angka itu sendiri untuk 0 dan 1. Memangkatkan setiap angka dengan jumlah angka tersebut akan menghasilkan kesepuluh nilai angka tunggal, yang merupakan generalisasi yang sama seperti yang dijelaskan sebelumnya.
Kedua daftar tersebut cukup singkat untuk dijadikan tolok ukur, sehingga biaya pendekatan ini perlu dinyatakan secara eksplisit.
Kompleksitas Waktu dan Ruang dari Program Angka Armstrong
Loop bagian dalam membagi variabel kerja dengan 10 pada setiap putaran, sehingga berjalan sekali per digit, bukan sekali per unit angka. Hal itu membuat pengecekan nilai tunggal menjadi sangat efisien, dan tetap efisien meskipun inputnya bertambah besar.
| program | Kompleksitas waktu | Kompleksitas ruang |
| Periksa satu angka | O(d), di mana d adalah jumlah digit | O (1) |
| Pindai rentang N angka | O(N × d) | O (1) |
Karena d sama dengan log10(angka) dibulatkan ke atas, pemeriksaan tunggal tersebut secara efektif bersifat logaritmik terhadap nilai yang diuji. Hanya tiga int Variabel tidak pernah dialokasikan, dan tidak ada array atau koleksi yang dibuat, itulah sebabnya biaya ruang tetap konstan tidak peduli seberapa besar rentangnya.
Berikut dua catatan praktis. Pertama, pemindaian rentang didominasi oleh N, sehingga mencetak angka Armstrong hingga satu juta biayanya kira-kira seribu kali lebih mahal daripada mencetaknya hingga seribu. Kedua, sebuah int Nilainya melebihi 2,147,483,647, sehingga pencarian di rentang yang sangat besar diperlukan. long untuk kandidat dan jumlah kumulatif. Digit yang sama-extracPola tion muncul di banyak latihan pemula, termasuk pengecekan bilangan prima, yang deret fibonacci latihan program dan susunan seperti semacam gelembung ke jenis penyisipan.
