在該程序中,您將學(xué)習(xí)檢查給定的數(shù)字是否為阿姆斯壯數(shù)字。您將通過在Kotlin中使用while循環(huán)學(xué)習(xí)如何做到這一點(diǎn)。
一個(gè)正整數(shù)稱為阿姆斯特朗階數(shù),n如果
abcd... = an + bn + cn + dn + ...
對于3位的阿姆斯特朗數(shù),每個(gè)數(shù)字的立方數(shù)之和等于數(shù)字本身。例如:
153 = 1*1*1 + 5*5*5 + 3*3*3 // 153 是一個(gè)阿姆斯特朗數(shù).
fun main(args: Array<String>) { val number = 371 var originalNumber: Int var remainder: Int var result = 0 originalNumber = number while (originalNumber != 0) { remainder = originalNumber % 10 result += Math.pow(remainder.toDouble(), 3.0).toInt() originalNumber /= 10 } if (result == number) println("$number 是阿姆斯特朗數(shù).") else println("$number 不是阿姆斯特朗數(shù).") }
運(yùn)行該程序時(shí),輸出為:
371 是阿姆斯特朗數(shù)
首先,給定數(shù)字(number)的值存儲(chǔ)在另一個(gè)整數(shù)變量originalNumber中。這是因?yàn)?,我們需要在最后比較最終數(shù)字和原始數(shù)字的值。
然后,使用while循環(huán)對originalNumber進(jìn)行遍歷循環(huán),直到它等于0。
在每次迭代中,num的最后一位存儲(chǔ)在remainder中。
然后,使用Math.pow()函數(shù)將remainder加3(數(shù)字位數(shù))并加到result中。
然后,除以10后,從originalNumber中刪除最后一位數(shù)字。
最后,result和number進(jìn)行比較。如果相等,則為阿姆斯壯數(shù)。如果不等,則不是。
以下是等效的Java代碼:檢查阿姆斯特朗數(shù)的Java程序
fun main(args: Array) { val number = 1634 var originalNumber: Int var remainder: Int var result = 0 var n = 0 originalNumber = number while (originalNumber != 0) { originalNumber /= 10 ++n } originalNumber = number while (originalNumber != 0) { remainder = originalNumber % 10 result += Math.pow(remainder.toDouble(), n.toDouble()).toInt() originalNumber /= 10 } if (result == number) println("$number 是阿姆斯特朗數(shù).") else println("$number 不是阿姆斯特朗數(shù).")}
在此程序中,我們使用了兩個(gè)while循環(huán)。第一個(gè)while循環(huán)用于計(jì)算 number 中的位數(shù)。
然后,originalNumber還原為給定的number。
然后,第二個(gè)while循環(huán)檢查數(shù)字是否為阿姆斯特朗數(shù)。
訪問此頁面以了解如何顯示兩個(gè)時(shí)間間隔之間的所有阿姆斯特朗數(shù)字。