C#算法之實現(xiàn)阿姆斯特朗數(shù)
阿姆斯特朗數(shù)
阿姆斯特朗數(shù)是一個數(shù)字,等于每個數(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;
/*
* 這里我們只測試int類型的最大值區(qū)間(<2,147,483,647)的結果,
* 所以我們定義的長度為0
*/
int[] digitArray = new int[10];
double sum = 0;
Console.Write("請輸入驗證的數(shù)字 : ");
//1.輸入數(shù)字
int number = int.Parse(Console.ReadLine());
//2.用臨時變量保存該數(shù)字
int temporaryNumber = number;
//3.保存數(shù)字的總數(shù)以及每個數(shù)字存儲在數(shù)字數(shù)組中
while (number > 0)
{
digitArray[i++] = number % 10;
number = number / 10;
digitCount++;
}
//4.計算結果
for (i = 0; i < digitCount; i++)
//計算數(shù)字的次數(shù)冪
sum += Math.Pow(digitArray[i], digitCount);
//5.判斷結果
if (sum == temporaryNumber)
Console.WriteLine($"{temporaryNumber} 屬于阿姆斯特朗數(shù)");
else
Console.WriteLine($"{temporaryNumber} 不屬于阿姆斯特朗數(shù)");
Console.ReadLine();
}
測試輸出結果:

獲取某個區(qū)間的所有阿姆斯特朗數(shù)
static void Main(string[] args)
{
Console.Write("輸入起始數(shù)字 : ");
int StartNumber = int.Parse(Console.ReadLine());
Console.Write("輸入結束數(shù)字 : ");
int EndNumber = int.Parse(Console.ReadLine());
Console.WriteLine($"阿姆斯特朗數(shù)區(qū)間為: {StartNumber} ~ {EndNumber} 的結果為 : ");
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#算法之實現(xiàn)阿姆斯特朗數(shù)的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C#后端接收form-data,創(chuàng)建實體類教程
這篇文章主要介紹了C#后端接收form-data,創(chuàng)建實體類教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06
C#使用throw和throw?ex拋出異常的區(qū)別介紹
這篇文章介紹了C#使用throw和throw?ex拋出異常的區(qū)別,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-10-10
C#模板方法模式(Template Method Pattern)實例教程
這篇文章主要介紹了C#模板方法模式(Template Method Pattern),以實例形式講述了C#抽象類模板方法的用法,具有很高的實用價值,需要的朋友可以參考下2014-09-09
如何用C#找出數(shù)組中只出現(xiàn)了一次的數(shù)字
數(shù)組從字面上理解就是存放一組數(shù),下面這篇文章主要給大家介紹了關于如何用C#找出數(shù)組中只出現(xiàn)了一次的數(shù)字,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-12-12
C#實現(xiàn)異步連接Sql Server數(shù)據(jù)庫的方法
這篇文章主要介紹了C#實現(xiàn)異步連接Sql Server數(shù)據(jù)庫的方法,涉及C#中await方法的相關使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-04-04


