C# C中的阿姆斯特朗数#

C# C中的阿姆斯特朗数#,c#,math,C#,Math,我用C#编写了这个程序来生成阿姆斯特朗数。我知道添加额外的方法是不必要的,但这是我刚刚学会并一直在练习的东西。因此,无论我给出的限制有多大,生成器只显示9之前的数字 using System; namespace ArmstrongNumberGenerator { class Program { static void Main(string[] args) { Console.WriteLine("Enter the

我用C#编写了这个程序来生成阿姆斯特朗数。我知道添加额外的方法是不必要的,但这是我刚刚学会并一直在练习的东西。因此,无论我给出的限制有多大,生成器只显示9之前的数字

using System;

namespace ArmstrongNumberGenerator
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter the maximum limit for searching");
            int max = Convert.ToInt32(Console.ReadLine());
            for (int i = 1; i <= max; i++)
            {
                if (isArmstrong(i))
                    Console.WriteLine(i);
            }
            Console.ReadLine();
        }

        static bool isArmstrong(int x)
        {
            int temp = x;
            int sum = 0;
            while (x!=0)
            { sum = sum + x % 10;
                x = x / 10;
            }

            if (sum == temp)
                return true;
            else
                return false;
        }
    }
}
使用系统;
名称空间ArmstrongNumberGenerator
{
班级计划
{
静态void Main(字符串[]参数)
{
Console.WriteLine(“输入搜索的最大限制”);
int max=Convert.ToInt32(Console.ReadLine());

对于(int i=1;i阿姆斯特朗数的解释:

其数字的立方体之和必须等于数字本身

例如,
407
作为输入。
4*4*4+0*0*0+7*7*7=407
是一个阿姆斯特朗数字

您需要正确计算总和:

static bool isArmstrong(int x)
{
    int sum = 0;
    for (int i = x; i > 0; i = i / 10)
    {
        sum = sum + (int)Math.Pow(i % 10, 3.0);
    }

    if (x == sum)
        return true;
    else
        return false;
}
您的代码有以下输出(除了我包含的
0
也是阿姆斯特朗编号):


阿姆斯特朗号码说明:

其数字的立方体之和必须等于数字本身

例如,
407
作为输入。
4*4*4+0*0*0+7*7*7=407
是一个阿姆斯特朗数字

您需要正确计算总和:

static bool isArmstrong(int x)
{
    int sum = 0;
    for (int i = x; i > 0; i = i / 10)
    {
        sum = sum + (int)Math.Pow(i % 10, 3.0);
    }

    if (x == sum)
        return true;
    else
        return false;
}
您的代码有以下输出(除了我包含的
0
也是阿姆斯特朗编号):


你的isAmstrong公式本身似乎是错误的

尝试使用Math.Pow(x%10,3)的总和来代替以下内容:

sum = sum + x % 10;
x = x / 10;
使用

签出阿姆斯特朗号码:


您的isAmstrong公式本身似乎是错误的

尝试使用Math.Pow(x%10,3)的总和来代替以下内容:

sum = sum + x % 10;
x = x / 10;
使用

签出阿姆斯特朗号码:


您从不使用当前数字检查数字长度幂,因为:

在休闲数论中,阿姆斯特朗数是 一个数字,它是其自身数字的总和,每个数字的幂均为 位数

我根据这一点修正了你的方法

static bool isArmstrong(int x)
{
    int sum = 0;
    int tempX = x;
    int temp = 0;
    int length = x.ToString().Length;

    while (x != 0)
    {
        temp = x % 10;
        x = x / 10;
        sum += (int)Math.Pow(temp, length);
    }

    if (sum == tempX)
        return true;
    else
        return false;
}
例如,如果调用所有小于
10000
的阿姆斯特朗号码

for (int i = 1; i < 10000; i++)
{
     if (isArmstrong(i))
         Console.WriteLine(i);
}

您从不使用当前数字检查数字长度幂,因为:

在休闲数论中,阿姆斯特朗数是 一个数字,它是其自身数字的总和,每个数字的幂均为 位数

我根据这一点修正了你的方法

static bool isArmstrong(int x)
{
    int sum = 0;
    int tempX = x;
    int temp = 0;
    int length = x.ToString().Length;

    while (x != 0)
    {
        temp = x % 10;
        x = x / 10;
        sum += (int)Math.Pow(temp, length);
    }

    if (sum == tempX)
        return true;
    else
        return false;
}
例如,如果调用所有小于
10000
的阿姆斯特朗号码

for (int i = 1; i < 10000; i++)
{
     if (isArmstrong(i))
         Console.WriteLine(i);
}
int num=407;
int nnum=num;
字符串ss=num.ToString();
int a=0;
int b=0;字符串aa=“”;
双newA=0;
for(int i=0;i0)
{
如果(数值<10)
{
num=num+10;
}
a=num%10;
aa+=a+“,”;
字符串s=num.ToString();
字符串str=s.Remove(s.Length-1,1);
s=str;
b=int.Parse(s);
newA+=Math.Pow(a,3);
Console.WriteLine(({0}))”,newA);
num=b;
控制台写入线(aa);
num=int.Parse(str);
}
如果(nnum==newA)
{
WriteLine(“\n\n\n\n{0}是一个强数…!”,nnum);
}
}
int num=407;
int nnum=num;
字符串ss=num.ToString();
int a=0;
int b=0;字符串aa=“”;
双newA=0;
for(int i=0;i0)
{
如果(数值<10)
{
num=num+10;
}
a=num%10;
aa+=a+“,”;
字符串s=num.ToString();
字符串str=s.Remove(s.Length-1,1);
s=str;
b=int.Parse(s);
newA+=Math.Pow(a,3);
Console.WriteLine(({0}))”,newA);
num=b;
控制台写入线(aa);
num=int.Parse(str);
}
如果(nnum==newA)
{
WriteLine(“\n\n\n\n{0}是一个强数…!”,nnum);
}
}

我编写了下面的代码,以确定给定的数字是否是阿姆斯特朗数字,并且工作正常

使用字符串参数创建了一个名为Armstrong的新静态方法

public static void Armstrong(string i)
        {
            double k=0;
            for (int j = 0; j < i.Length; j++)
            {
                k = k + Math.Pow(Convert.ToInt16(Convert.ToString(i[j])), i.Length);
            }

            if (k == int.Parse(i))
            {
                Console.WriteLine("Armstrong");
            }

            else
            {
                Console.WriteLine("Not Armstrong");
            }
        }
公共静态无效Armstrong(字符串i)
{
双k=0;
对于(int j=0;j
如果我们在Main方法中调用该方法,那么就可以得到所需的输出

阿姆斯特朗(“153”)

结果:阿姆斯特朗


类似地,如果我们想确定一个数字是否为armstrong,那么将所需的数字保留为该方法的参数并执行

我已经编写了下面的代码,以确定给定的数字是否为armstrong数字,并且工作正常

使用字符串参数创建了一个名为Armstrong的新静态方法

public static void Armstrong(string i)
        {
            double k=0;
            for (int j = 0; j < i.Length; j++)
            {
                k = k + Math.Pow(Convert.ToInt16(Convert.ToString(i[j])), i.Length);
            }

            if (k == int.Parse(i))
            {
                Console.WriteLine("Armstrong");
            }

            else
            {
                Console.WriteLine("Not Armstrong");
            }
        }
公共静态无效Armstrong(字符串i)
{
双k=0;
对于(int j=0;j
如果我们在Main方法中调用该方法,那么就可以得到所需的输出

阿姆斯特朗(“153”)

结果:阿姆斯特朗

同样,如果我们想知道一个数是否为ar