C#算法之實(shí)現(xiàn)阿姆斯特朗數(shù)
阿姆斯特朗數(shù)
阿姆斯特朗數(shù)是一個(gè)數(shù)字,等于每個(gè)數(shù)字的冪乘以總位數(shù)。 例如,諸如0、1、153、370、371和407、1634、8208、9474的數(shù)字是阿姆斯特朗數(shù)。
例如:
371 為3位數(shù), 則用每位數(shù)的3次方
(3 * 3 * 3)=27
(7 * 7 * 7)=343
(1 * 1 * 1) =1
總數(shù): 27+343+1=371
判斷數(shù)字是否屬于阿姆斯特朗數(shù)?
static void Main(string[] args) { int i = 0; int digitCount = 0; /* * 這里我們只測(cè)試int類(lèi)型的最大值區(qū)間(<2,147,483,647)的結(jié)果, * 所以我們定義的長(zhǎng)度為0 */ int[] digitArray = new int[10]; double sum = 0; Console.Write("請(qǐng)輸入驗(yàn)證的數(shù)字 : "); //1.輸入數(shù)字 int number = int.Parse(Console.ReadLine()); //2.用臨時(shí)變量保存該數(shù)字 int temporaryNumber = number; //3.保存數(shù)字的總數(shù)以及每個(gè)數(shù)字存儲(chǔ)在數(shù)字?jǐn)?shù)組中 while (number > 0) { digitArray[i++] = number % 10; number = number / 10; digitCount++; } //4.計(jì)算結(jié)果 for (i = 0; i < digitCount; i++) //計(jì)算數(shù)字的次數(shù)冪 sum += Math.Pow(digitArray[i], digitCount); //5.判斷結(jié)果 if (sum == temporaryNumber) Console.WriteLine($"{temporaryNumber} 屬于阿姆斯特朗數(shù)"); else Console.WriteLine($"{temporaryNumber} 不屬于阿姆斯特朗數(shù)"); Console.ReadLine(); }
測(cè)試輸出結(jié)果:
獲取某個(gè)區(qū)間的所有阿姆斯特朗數(shù)
static void Main(string[] args) { Console.Write("輸入起始數(shù)字 : "); int StartNumber = int.Parse(Console.ReadLine()); Console.Write("輸入結(jié)束數(shù)字 : "); int EndNumber = int.Parse(Console.ReadLine()); Console.WriteLine($"阿姆斯特朗數(shù)區(qū)間為: {StartNumber} ~ {EndNumber} 的結(jié)果為 : "); for (int i = StartNumber; i <= EndNumber; i++) { if (IsArmstrongNumber(i)) Console.WriteLine(i); } Console.ReadLine(); } static bool IsArmstrongNumber(int number) { int sum = 0; int temporaryNumber = number; int temp = 0; int length = number.ToString().Length; while (number != 0) { temp = number % 10; number = number / 10; sum += (int)Math.Pow(temp, length); } if (sum == temporaryNumber) return true; else return false; }
測(cè)試輸出結(jié)果:
到此這篇關(guān)于C#算法之實(shí)現(xiàn)阿姆斯特朗數(shù)的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
UnityShader3實(shí)現(xiàn)2D描邊效果
這篇文章主要為大家詳細(xì)介紹了UnityShader3實(shí)現(xiàn)2D描邊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02C#后端接收f(shuō)orm-data,創(chuàng)建實(shí)體類(lèi)教程
這篇文章主要介紹了C#后端接收f(shuō)orm-data,創(chuàng)建實(shí)體類(lèi)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06C#通過(guò)熱鍵控制顯示器開(kāi)關(guān)的方法
這篇文章主要介紹了C#通過(guò)熱鍵控制顯示器開(kāi)關(guān)的方法,涉及C#針對(duì)熱鍵的操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12c#基于NVelocity實(shí)現(xiàn)代碼生成
這篇文章主要介紹了c#基于NVelocity實(shí)現(xiàn)代碼生成的方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2021-01-01C#使用throw和throw?ex拋出異常的區(qū)別介紹
這篇文章介紹了C#使用throw和throw?ex拋出異常的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10C#模板方法模式(Template Method Pattern)實(shí)例教程
這篇文章主要介紹了C#模板方法模式(Template Method Pattern),以實(shí)例形式講述了C#抽象類(lèi)模板方法的用法,具有很高的實(shí)用價(jià)值,需要的朋友可以參考下2014-09-09c# xml轉(zhuǎn)word的實(shí)現(xiàn)示例
這篇文章主要介紹了c# xml轉(zhuǎn)word的實(shí)現(xiàn)示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-04-04如何用C#找出數(shù)組中只出現(xiàn)了一次的數(shù)字
數(shù)組從字面上理解就是存放一組數(shù),下面這篇文章主要給大家介紹了關(guān)于如何用C#找出數(shù)組中只出現(xiàn)了一次的數(shù)字,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12C#實(shí)現(xiàn)異步連接Sql Server數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了C#實(shí)現(xiàn)異步連接Sql Server數(shù)據(jù)庫(kù)的方法,涉及C#中await方法的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04