我需要找出超过3000亿的主要因素。我有一个函数正在添加到它们的列表中…非常慢!它已经跑了大约一个小时了,我想它还有很长的路要走。我这样做是完全错了还是应该这样做?
编辑:我试图找到数字600851475143的最大素因数。
编辑:
结果:

{
    List<Int64> ListOfPrimeFactors = new List<Int64>();
    Int64 Number = 600851475143;
    Int64 DividingNumber = 2;

    while (DividingNumber < Number / DividingNumber)
    {
        if (Number % DividingNumber == 0)
        {
            ListOfPrimeFactors.Add(DividingNumber);
            Number = Number/DividingNumber;
        }
        else
            DividingNumber++;
        }
        ListOfPrimeFactors.Add(Number);
        listBox1.DataSource = ListOfPrimeFactors;
    }
}

最佳答案

你是否记得在找到它们的时候,把你要分解的数字除以每一个因子?
比如说,你发现2是一个因素您可以将其添加到因子列表中,然后将要进行因子分解的数字除以该值。
现在你只在寻找1500亿的因素。每次你都应该从你刚找到的因素开始。所以如果2是一个因素,那么再次测试2如果你找到的下一个因子是3,那么从2开始就没有点测试了。
等等…

10-07 14:09