#include<stdio.h> #include<math.h> intmain() { //宣告並讀取變數n、m,代表判斷範圍的上下限 int n, m, test = 0; scanf("%d %d", &n, &m); //利用for迴圈跑從n到m的所有數字 for(int num = n ; num <= m ; num++) { //宣告變數num,代表檢查到的數;宣告變數len,代表此數的位數 int i = num, len = 1; //若此數大於等於10,就將其除以10,並將len加一 while(i >= 10) { i /= 10; len++; }
//宣告變數sum,代表各個位數的總和 int sum = 0; //從最高位開始,將此數的各個位數len次方後相加 for(int i = len ; i > 0 ; i--) //num為目前判斷的數字,共len位數,i代表目前檢查到的位數 //將num%pow(10, i)即可得num在i位以後(含)的數字,/pow(10, i-1)可得num在i-1位以前的數字,即為第i位數字 sum += pow((num%(int)pow(10, i)/(int)pow(10, i-1)), len); //若此len位數的數字,各個位數的len次方和等於自己,即為阿姆斯壯數,需輸出 if(sum == num) { printf("%d ", num); test++; } } //若範圍內的數字皆無阿姆斯壯數,輸出None if(test == 0) printf("none"); return0; }