在此程序中,您將學(xué)習(xí)檢查給定的數(shù)字是否為阿姆斯特朗數(shù)字。您將通過在Java中使用for循環(huán)和while循環(huán)學(xué)習(xí)如何做到這一點(diǎn)。
一個(gè)正整數(shù)稱為阿姆斯特朗階數(shù),n如果
abcd... = an + bn + cn + dn + ...
對(duì)于3位的阿姆斯特朗數(shù)字,每個(gè)數(shù)字的立方數(shù)之和等于數(shù)字本身。例如:
153 = 1*1*1 + 5*5*5 + 3*3*3 // 153 是一個(gè)阿姆斯特朗數(shù)。
public class Armstrong { public static void main(String[] args) { int number = 371, originalNumber, remainder, result = 0; originalNumber = number; while (originalNumber != 0) { remainder = originalNumber % 10; result += Math.pow(remainder, 3); originalNumber /= 10; } if(result == number) System.out.println(number + " 是一個(gè)阿姆斯特朗數(shù)。"); else System.out.println(number + " 不是一個(gè)阿姆斯特朗數(shù)。"); } }
運(yùn)行該程序時(shí),輸出為:
371 是一個(gè)阿姆斯特朗數(shù)。
首先,給定數(shù)字(number)的值存儲(chǔ)在另一個(gè)整數(shù)變量originalNumber中。這是因?yàn)?,我們需要在最后比較最終數(shù)字和原始數(shù)字的值。
然后,使用while循環(huán)對(duì)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ù)。如果不等,則不是。
public class Armstrong { public static void main(String[] args) { int number = 1634, originalNumber, remainder, result = 0, n = 0; originalNumber = number; for (;originalNumber != 0; originalNumber /= 10, ++n); originalNumber = number; for (;originalNumber != 0; originalNumber /= 10) { remainder = originalNumber % 10; result += Math.pow(remainder, n); } if(result == number) System.out.println(number + " 是一個(gè)阿姆斯特朗數(shù)."); else System.out.println(number + " 不是一個(gè)阿姆斯特朗數(shù)."); } }
運(yùn)行該程序時(shí),輸出為:
1634 是一個(gè)阿姆斯特朗數(shù).
在此程序中,我們沒有使用while循環(huán),而是使用了兩個(gè)for循環(huán)。
第一個(gè)for循環(huán)用于計(jì)算數(shù)字中的位數(shù)。它是以下形式的壓縮形式:
for (;originalNumber != 0; originalNumber /= 10) { n++; }
然后,第二個(gè)for循環(huán)計(jì)算result,其中在每次迭代中,余數(shù)由數(shù)字n求冪。
訪問此頁(yè)面以了解如何顯示兩個(gè)間隔之間的所有阿姆斯壯數(shù)字。