求0~999之間的所有「水仙花數」並輸出。
「水仙花數」是指乙個三位數,其各位數字的立方和確好等於該數本身,如;153=1+5+3?,則153是乙個「水仙花數」。
/* 首先我們先了解一下什麼叫水仙花,在數論中,水仙花數(narcissistic number)也稱為自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數(armstrong number),是指一n位數,其各個數之n次方和等於該數。
例如153、370、371及407就是三位數的水仙花數,其各個數之立方和等於該數:
153 = 1^3 + 5^3 + 3^3。
370 = 3^3 + 7^3 + 0^3。
371 = 3^3 + 7^3 + 1^3。
407 = 4^3 + 0^3 + 7^3。
*/ 要求乙個水仙花,我們先要得到它的百位上的數字,怎麼得到呢?我們只需要讓這個數除以一百就得到了百位上的數字;
同理,用這個數先對一百取餘得到乙個兩位數,再用得到的兩位數除以10,我們便得到十位數的數字;
個位上的數字當然只需要對10取餘就得到啦,以下就是具體的得到相應數字的計算公式
//a=i/100; // 153除以100得到1
//b=(i%100)/10; //153對100取餘得到53,53對10取餘得到3
//c=i%10;
接下來我們就需要對這個數進行判斷,將各個數字進行立方計算並相加,把相加的結果與這個數進行比較,如果是一樣打的數,那麼這個數就是水仙花。
if (i == sum && i != 0 && i !=1) //這裡我們需要判斷
#includeint main() }
return 0;
}
其實,以上方法是大多數人的正常思考習慣,雖然按要求求出了0~999之間的水仙花,但是還是有侷限性的,以下給出通用的簡潔演算法。
int main()
//2. 獲得i的每一位,計算次方和
tmp = i;
while(tmp)
//3. 判斷是否為水仙花數
if(sum == i)
}return 0;
}
求出0 999之間的所有「水仙花數」並輸出。
水仙花數 是指乙個三位數,其各位數字的立方和確好等於該數本身,如 153 1 5 3 則153是乙個 水仙花數 在數論中,水仙花數 narcissistic number 也稱為自戀數 自冪數 阿姆斯壯數或阿姆斯特朗數 armstrong number 是指一n位數,其各 個數之n次方和等於該數。例...
求出0 999之間的所有「水仙花數」並輸出
題目 求出0 999之間的所有 水仙花數 並輸出 水仙花數 是指乙個三位數,其各位數字的立方和確好等於該數本身,如 153 1 3 5 3 3 3,則153是乙個 水仙花數 在數論中,水仙花數 narcissistic number 也稱為自戀數 自冪數 阿姆斯壯數或阿姆斯特朗數 armstrong...
求出0 999之間的所有「水仙花數」並輸出。
求出0 999之間的所有 水仙花數 並輸出。水仙花數 是指乙個三位數,其各位數字的立方和確好等於該數本身,如 153 1 5 3?則153是乙個 水仙花數 在數論中,水仙花數 narcissistic number 也稱為自戀數 自冪數 阿姆斯壯數或阿姆斯特朗數 armstrong number 是...