>  기사  >  백엔드 개발  >  C#의 암스트롱 번호

C#의 암스트롱 번호

WBOY
WBOY원래의
2024-09-03 15:35:11377검색

암스트롱 수는 큐브의 자릿수 합계와 동일한 숫자입니다. N개의 숫자로 구성되며 각 숫자의 N제곱을 합한 것과 같습니다. 예를 들어 0, 1, 153, 370, 371 및 407, 1634, 8208, 9474를 포함한 숫자는 암스트롱 숫자로 간주됩니다. 이번 주제에서는 C#의 Armstrong Number에 대해 알아보겠습니다.

암호화 및 복호화 과정에서 암스트롱의 번호가 비밀키로 사용됩니다. 두 명의 의도된 사용자 간의 보호와 함께 인증을 수행하기 위해 서버가 사용됩니다. 보내는 사람과 받는 사람은 서버의 도움을 받아 확인됩니다.

논리

암스트롱 수의 논리를 확인하기 위해 숫자 중 하나를 사용하여 암스트롱 수법에 대해 간략하게 설명하겠습니다. 논리를 설명하기 위해 숫자를 407로 간주합니다.

407 = (4*4*4) + (0*0*0) + (7*7*7)

여기서는 아래와 같이 각 숫자를 3번 곱합니다.

(4*4*4) = 64

(0*0*0) = 0

(7*7*7) = 343

따라서 위의 곱셈값을 더하면 아래와 같은 결과가 나옵니다.

64+0+343 = 407

C#의 암스트롱 수 예시

아래에 언급된 예시는 다음과 같습니다.

예시 #1

코드:

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
int i = 0;
int num = 0;
int[] numArray = new int[10];
double res = 0;
//Step 1 : Provide the number in this step
Console.Write("Please enter the number : ");
int number = int.Parse(Console.ReadLine());
//Step 2 : Now store the number in a temporary variable
int tmpryNum = number;
//Step 3 : Calculate the total number of integers in number and store each integer in the digit array
while (number > 0)
{
numArray[i++] = number % 10;
number = number / 10;
num++;
}
//Step 4 : Calculate the number
for (i = 0; i < num; i++)
{
res += Math.Pow(numArray[i], num);
}
//Step 5 : Check whether number is prime or not
if (res == tmpryNum)
{
Console.WriteLine($"The number {tmpryNum} is armstrong");
}
else
{
Console.WriteLine($"The number {tmpryNum} is not armstrong");
}
Console.ReadLine();
}
}

출력:

C#의 암스트롱 번호

예시 #2

코드:

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
int mynum, remainder, res = 0;
Console.Write("Please enter an integer number: ");
mynum = int.Parse(Console.ReadLine());
for (int m = mynum; m > 0; m = m / 10)
{
remainder = m % 10;
res = res + remainder*remainder*remainder;
}
if (res == mynum)
{
Console.Write("The number entered by you is an Armstrong number...");
}
else
Console.Write("The number entered by you is not an Armstrong number...");
Console.ReadLine();
}
}

출력:

C#의 암스트롱 번호

예시 #3

코드:

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
int mynum,m, res=0,r;
Console.Write("Please enter the number :");
mynum = Convert.ToInt32(Console.ReadLine());
m = mynum;
while(m!=0)
{
r=m%10;
res =res+(r*r*r);
m = m / 10;
}
if(res==mynum)
Console.WriteLine("The number which you have entered is an Armstrong Number...");
else
Console.WriteLine("The number which you have entered is not an Armstrong Number...");
Console.ReadKey();
}
}

출력

C#의 암스트롱 번호

예시 #4

코드:

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
int mynum,val,res,temp_var;
int start_no,end_no;
Console.Write("\n\n");
Console.Write("Searching for the Armstrong number in a given range of range of numbers:\n");
Console.Write("--------------------------------------------------------");
Console.Write("\n\n");
Console.Write("Enter the starting number... ");
start_no= Convert.ToInt32(Console.ReadLine());
Console.Write("Enter the ending number... ");
end_no= Convert.ToInt32(Console.ReadLine());
Console.Write("The list of Armstrong numbers in given above range are: ");
for(mynum=start_no;mynum<=end_no;mynum++){
temp_var=mynum;
res = 0;
while(temp_var!=0){
val=temp_var % 10;
temp_var=temp_var/10;
res=res+(val*val*val);
}
if(res==mynum)
Console.Write("{0} ",mynum);
}
Console.Write("\n");
}
}

출력:

C#의 암스트롱 번호

예시 #5

코드:

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
Console.Write("Enter the Start Number : ");
int StartNumber = int.Parse(Console.ReadLine());
Console.Write("Enter the End Number : ");
int EndNumber = int.Parse(Console.ReadLine());
Console.WriteLine($"The Armstrong Numbers between {StartNumber} and {EndNumber} are : ");
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#의 암스트롱 번호

예시 #6

코드:

using System;
public class Program
{
// This function is used to find Nth Armstrong Number
static int ArmstrongNum(int n)
{
int cnt = 0;
// specifying the upper limit from integer
for(int m = 1; m <= int.MaxValue; m++)
{
int num = m, rem, digit = 0, res = 0;
num = m;
// Calculate the total digits in num
digit = (int) Math.Log10(num) + 1;
// Calculate sum of power of digits
while(num > 0)
{
rem = num % 10;
res = res + (int)Math.Pow(rem, digit);
num = num / 10;
}
// Check the Armstrong number
if(m == res)
cnt++;
if(cnt == n)
return m;
}
return n;
}
public static void Main()
{
int n = 15;
Console.WriteLine(ArmstrongNum(n));
}
}

출력:

C#의 암스트롱 번호

예시 #7

코드:

using System;
public class Program
{
int power(int a, long b)
{
if( b == 0)
return 1;
if (b % 2 == 0)
return power(a, b / 2) * power(a, b / 2);
return a * power(a, b / 2) * power(a, b / 2);
}
int myfunc(int a)
{
int n = 0;
while (a != 0)
{
n++;
a = a / 10;
}
return n;
}
bool ArmstrongNum (int a)
{
int n = myfunc(a);
int tmp_var = a, res = 0;
while (tmp_var != 0)
{
int rs = tmp_var % 10;
res = res + power(rs, n);
tmp_var = tmp_var / 10;
}
return (res == a);
}
public static void Main()
{
Program pgm = new Program();
int a = 8208;
Console.WriteLine(pgm.ArmstrongNum(a));
a = 1423;
Console.WriteLine(pgm.ArmstrongNum(a));
}
}

출력:

C#의 암스트롱 번호

결론

지금까지 암스트롱의 숫자가 C#에서 어떻게 활용될 수 있는지 살펴보았습니다. 정수론에서는 자기애적 수(narcissistic number)라고 합니다. 이 기사를 통해 위에 설명된 내용이 여러분의 C# 지식에 가치를 더해주기를 바랍니다. 위의 다양한 방법으로 암스트롱 숫자기법을 활용한 다양한 숫자놀이를 해보세요.

위 내용은 C#의 암스트롱 번호의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:C#의 소수다음 기사:C#의 소수