如何用C#尋找100到999的所有水仙花數?


 首先解釋一下何為水仙花數:水仙花數只是自冪數的一種,嚴格來說是三位數的個位、十位、百位的3次冪數相加等於原來的數字,稱為水仙花數。(例如:1^3 + 5^3+ 3^3 = 153)

那么如何通過C#語句來解決這個問題呢?

分析:想要找到百位的水仙花數,要解決的問題由兩個,第一個是如何讓計算機正確分離出百位數的個位、十位、百位的數字。第二個是如何將其不斷循環讓100到999都能經過檢驗。

第一個問題:將這個數值類型定義為整型int(這種數據類型的數字是沒有小數點的)

最高位數字——對100整除,則小數點后的數值都被強制去掉了。如153/100=1.53=1(int類型);

最低位數字——對10取余數,153%10=3;

中間位數字,利用上面兩種方法有兩種不同的解決思路。

方法1:將其變為最高位數字再整除,先將這個數字減去100*最高位數字,則中間位則成為最高位數字,再用它對10整除,小數點被去掉了。

如(153-100*1)/10=5.3=5(int)

方法2:將其變為最低位數字,這個數字除以10之后,中間位的數字就變成了最低位。由於除法運算符的優先級高於求余運算符,所以括號可以省略。

(153/10)%10=153/10%10=15%10=5

第二個問題:選用while或for循環結構,使得100到999都能拆開來分別來檢驗。

int i=100

while(i<=999){循環體 ;i++;

}

for(表達式1;表達式2;表達式3)

表達式1設置初始條件,表達式2是循環條件,表達式3是循環的調整。

  for (int i = 100; i < 1000; i++)

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

代碼示例

int num = 100;
while(num <= 999)
{
int a = num / 100;//取出數字的百位
int b = num / 10 % 10;//取出數字的十位
int c = num % 10;//取出數字的個位
if (num == a * a * a + b * b * b + c * c * c)//計算過程
{
Console.WriteLine(num);//輸出數字
}
num++;
}
Console.ReadLine();

 

其實用C#尋找100到999的所有水仙花數的方式有多種,可以利用for循環等等,這里就不一一列出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM