让算法更高效

两个(2 位)数字写在一起,所以它们形成一个 4 位数字。这个 4 位数字可以被这两个数字的乘法相除。问题是我必须找到这个数字。


我写了一个算法并得到了 2 对这些数字。


1) 13 和 52,所以 1352 可以除以 13 * 52。


2) 17 和 34,所以 1734 可以除以 17 * 34。


我的算法是这样的:


for (int i = 1010; i <= 9999; i++)

{

    int mult = (i / 100) * (i % 100);


    if ((i % 100) > 9 && i % mult == 0)

    {

        Console.WriteLine(i / 100 + " <--> " + i % 100);

    }

}

编辑:使用这个算法(基于mentallurg答案)我发现这个数字快了一点


for (int i = 10; i < 99; i++)

{

    for (int j = 10; j < 99; j++)

    {

        int mult = i * j;

        int num = i * 100 + j;


        if (num % mult == 0)

        {

           Console.WriteLine(i + " <--> " + j);

        }

    }

}

我对如何使这个算法更有效感兴趣。


慕码人8056858
浏览 208回答 3
3回答

holdtom

使用从 1 到 99 的 2 个嵌套循环,您将避免在每个步骤上进行两次除法运算。
打开App,查看更多内容
随时随地看视频慕课网APP