一尘不染

3000亿的首要因素?

algorithm

我需要找出超过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;
    }
}

阅读 201

收藏
2020-07-28

共1个答案

一尘不染

您是否还记得在找到因子时将因子分解为每个因子?

举例来说,您发现2是一个因素。您可以将其添加到因子列表中,然后将要分解的数字除以该值。

现在,您仅在寻找1500亿的因子。每次您都应该从刚刚发现的因素开始。因此,如果2是一个因素,请再次测试2。如果找到的下一个因子是3,则不会再有2的点测试。

等等…

2020-07-28