获得大量的因子 - 通常是12位数......没有输出

时间:2015-05-09 12:35:15

标签: c# time-complexity factorial

我有一个示例控制台应用程序,它有一个计算给定数字因子的方法,并返回与列表相同的方法。

如果输入的数字小于9位,程序工作正常,但如果数字是12位数,则执行将永久进行,并且没有输出也没有例外。

我附上了执行代码......

static void Main(string[] args)
{
        var list = GetFactors(600851475143);
}

static List<long> GetFactors(long bigNum)
{
    var list = new List<long>();
    long counter = 1;
    try
    {
        while (counter <= bigNum / 2)
        {
            if (bigNum % counter == 0)
            {
                list.Add(counter);
            }
            counter++;
        }
    }
    catch (Exception ex)
    {
        throw;
    }

    return list;
}

1 个答案:

答案 0 :(得分:3)

......这是预料之中的。 大多数加密算法都基于计算给定数量(素数)因子的计算成本如何。 成本的增量不是线性的,所以最有可能的是,9到12位数之间的跳跃太大(使用未经优化的算法),你很快就无法看到结果。

网上有几个关于它的文件,其中只有一个很多: http://computer.howstuffworks.com/computing-power.htm