求出0 999之間的水仙花

2021-08-19 11:33:39 字數 1147 閱讀 2254

求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 是...