我需要找出超过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开始就没有点测试了。
等等…