如下圖,153的每個位數1、5、3的3次方的和剛好等於153,所以153是阿姆斯壯數,其他數以此類推。
口決:自己數字的次方和等於自己
以下是找十進制阿姆斯壯數的程式碼
用法:
Java
C
如有錯誤,歡迎留言指教。
Q = getAmsNum(a, b, ams[]) // Q為阿姆斯壯數的數量 // a、b 為搜尋的範圍,a < b // ams[] 儲存阿姆斯壯數的陣列
Java
static int getAmsNum(int a, int b, int[] ams){ //a ~ b 的阿姆斯壯數,存在ams[],並回傳阿姆斯壯數數量
int f = 0; //數量
for (int i = a; i <= b; i++){
int n = (int)Math.log10(i) + 1,sum = 0;//n位數
String s = String.valueOf(i);
for(int j = 1; j <= n; j++){
sum += Math.pow(Integer.valueOf(s.substring(j-1, j)), n);//每個數字次方後相加
}
if (i == sum){
ams[f] = i;//如果是阿姆斯壯數就放入陣列
f++;
}
}
return f;
}
C
int getAmsNum(int a, int b, int AmsNum[]){
int f = 0,i,num=0; //有無阿姆斯壯數
for (i = a; i <= b; i++){
int n = (int)log10(i)+1,temp = i,sum = 0;
while(temp != 0){
sum += pow((temp%10),n);
temp /= 10;
}
if ( i == sum){
num++;
AmsNum[num]=i;
f = 1;
}
}
return f;
}
如有錯誤,歡迎留言指教。

沒有留言:
張貼留言