C# c上的友好数#

C# c上的友好数#,c#,function,C#,Function,今天是我关于堆栈溢出的第一个问题,谢谢大家的回答(我的英语不好,对不起) 事实上,我在一个程序中使用它,显示友好的数字10000中的0。 程序重复数字我不明白为什么不工作好 图片: 284和220和284如何删除重复号码 友好号码示例: 220的除数是1、2、4、5、10、11、20、22、44、55和110:其和是284。284(1,2,4,71和142)的除数之和等于220 我的代码是: class Program { static int SumaDivisors(int nom

今天是我关于堆栈溢出的第一个问题,谢谢大家的回答(我的英语不好,对不起)

事实上,我在一个程序中使用它,显示友好的数字10000中的0。 程序重复数字我不明白为什么不工作好

图片:

284和220和284如何删除重复号码

友好号码示例:

220的除数是1、2、4、5、10、11、20、22、44、55和110:其和是284。284(1,2,4,71和142)的除数之和等于220

我的代码是:

class Program
{
    static int SumaDivisors(int nombre)
    {
        int suma;
        suma = 0;

        for (int contador = 1; contador < nombre; contador++)
        {
            if (nombre % contador == 0)
            {
                suma = suma + contador;
            }
        }
        return suma;
    }

    static void Main(string[] args)
    {
        Console.WriteLine("Busca els nombres amics entre 0 i 10000");
        int numero, suma1, suma2;

        for (numero = 1; numero < 10000; numero++)
        {

            suma1 = SumaDivisors(numero);
            suma2 = SumaDivisors(suma1);

            if (suma1 != numero && suma2 == numero)
            {
                Console.WriteLine("Els nombre {0} i {1} són nombres amics", suma1, suma2);
            }
        }
            Console.ReadKey();
    }
}
类程序
{
静态int-SumaDivisors(int-nombre)
{
内苏马;
suma=0;
for(int contador=1;contador
考虑这种情况:
numero=220
,然后
suma1=284
,所以
suma2=220
。然后考虑<代码>数字=284 < /代码>,然后<代码> SUMA1=220 < /COD>和SO <代码> SUMA2=284 < /代码>,正好相反。其他对也一样


对于解决方案,您可以做的最简单的检查是仅在
suma1时打印。考虑这种情况:
numero=220
,然后
suma1=284
suma2=220
。然后考虑<代码>数字=284 < /代码>,然后<代码> SUMA1=220 < /COD>和SO <代码> SUMA2=284 < /代码>,正好相反。其他对也一样


对于解决方案,您可以做的最简单的检查是仅当
suma1在迭代过程中发现两次时才打印。为了消除重复,您可以添加一个列表以防止该对再次显示:

static void Main(string[] args)
{
    Console.WriteLine("Busca els nombres amics entre 0 i 10000");
    var list = new List<int>();
    int numero, suma1, suma2;

    for (numero = 1; numero < 10000; numero++)
    {
        suma1 = SumaDivisors(numero);
        suma2 = SumaDivisors(suma1);

        if (suma1 != numero && suma2 == numero && !list.Contains(suma1) && !list.Contains(suma2))
        {
            list.Add(suma1);
            list.Add(suma2);

            Console.WriteLine("Els nombre {0} i {1} són nombres amics", suma1, suma2);
        }
    }

    Console.ReadKey();
}
static void Main(字符串[]args)
{
Console.WriteLine(“Busca els nombres amics entre 0 i 10000”);
var list=新列表();
国际号码,suma1,suma2;
对于(numero=1;numero<10000;numero++)
{
suma1=SumaDivisors(数字);
suma2=SumaDivisors(suma1);
if(suma1!=numero&&suma2==numero&&!list.Contains(suma1)&&!list.Contains(suma2))
{
添加列表(suma1);
列表。添加(suma2);
Console.WriteLine(“Els nombre{0}i{1}són nombres amics”,suma1,suma2);
}
}
Console.ReadKey();
}

在迭代过程中可能会发现两次。为了消除重复,您可以添加一个列表以防止该对再次显示:

static void Main(string[] args)
{
    Console.WriteLine("Busca els nombres amics entre 0 i 10000");
    var list = new List<int>();
    int numero, suma1, suma2;

    for (numero = 1; numero < 10000; numero++)
    {
        suma1 = SumaDivisors(numero);
        suma2 = SumaDivisors(suma1);

        if (suma1 != numero && suma2 == numero && !list.Contains(suma1) && !list.Contains(suma2))
        {
            list.Add(suma1);
            list.Add(suma2);

            Console.WriteLine("Els nombre {0} i {1} són nombres amics", suma1, suma2);
        }
    }

    Console.ReadKey();
}
static void Main(字符串[]args)
{
Console.WriteLine(“Busca els nombres amics entre 0 i 10000”);
var list=新列表();
国际号码,suma1,suma2;
对于(numero=1;numero<10000;numero++)
{
suma1=SumaDivisors(数字);
suma2=SumaDivisors(suma1);
if(suma1!=numero&&suma2==numero&&!list.Contains(suma1)&&!list.Contains(suma2))
{
添加列表(suma1);
列表。添加(suma2);
Console.WriteLine(“Els nombre{0}i{1}són nombres amics”,suma1,suma2);
}
}
Console.ReadKey();
}

当此if语句的左操作数为TRUE时[例如(suma1!=numero)]:


然后,它不会继续求值第二个操作数[eg(suma2==numero)],这样就不会捕捉到条件……这称为短路求值。

当此if语句的左操作数为真[eg(suma1!=numero)]:


然后它不会继续求值第二个操作数[例如(suma2==numero)],这样就不会捕捉到这种情况……这称为短路求值。

我不能在工作时访问imgur。你能将相关信息复制到问题中吗?如果其他人对此很熟悉,我不能在工作时访问imgur。你能将相关信息复制到问题中吗?如果其他人听上去很熟悉,谢谢你的回答,这是一个非常简单的解决方案,而且工作正确。你需要将配对存储在一个列表中,然后从列表中删除重复项(或者不添加已经存在的数字)。int[,]data={{284220}、{220284}、{12101184}、{11841210}、{29242620}、{2620224}、{55645020}、{50205564}、{63686232}、{62326368}@MarcCM,如果这个答案对你有用,一定要接受这个答案谢谢这个答案,这是一个非常简单的解决方案,而且它的工作是正确的。你需要将这些对存储在一个列表中,然后从列表中删除重复项(或者不要添加已经存在的数字)。int[,]data={{284220}、{220284}、{12101184}、{11841210}、{29242620}、{2620224}、{55645020}、{50205564}、{63686232}、{62326368}@MarcCM,如果这个答案对你有用的话,一定要接受它谢谢你的答案,很好的选择,但我不理解这个解决方案。我是c#world的新手,谢谢你的回答,很好的选择,但我不理解这个解决方案。我是c#world的新手谢谢你的建议,我是这个世界的新手,我感谢你的选择。谢谢你的建议,我是这个世界的新手,我感谢你的选择。