如下圖,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; }
如有錯誤,歡迎留言指教。
沒有留言:
張貼留言