我需要找出超过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的点测试。
等等…