Лучший способ найти все факторы данного числа
Все числа, которые делятся равномерно на х.
Я положил в 4 он возвращает: 4, 2, 1
редактировать: я знаю, это звучит домашнее задание. Я пишу небольшое приложение, чтобы заполнить некоторые таблицы продуктов полу случайными тестовыми данными. Двумя свойствами являются ItemMaximum и Item Multiplier. Мне нужно убедиться, что множитель не создаст нелогичной ситуации, когда покупка еще 1 предмета поставит ордер выше максимально допустимого. Таким образом, факторы предоставят список допустимых значений для моих тестовых данных.
edit ++: Это то, что я пошел после всей помощи от всех. Еще раз спасибо!
edit #: я написал 3 разные версии, чтобы увидеть, какая мне понравилась больше, и проверил их по факторингу небольших чисел и очень больших чисел. Я вставлю результаты.
static IEnumerable<int> GetFactors2(int n)
{
return from a in Enumerable.Range(1, n)
where n % a == 0
select a;
}
private IEnumerable<int> GetFactors3(int x)
{
for (int factor = 1; factor * factor <= x; factor++)
{
if (x % factor == 0)
{
yield return factor;
if (factor * factor != x)
yield return x / factor;
}
}
}
private IEnumerable<int> GetFactors1(int x)
{
int max = (int)Math.Ceiling(Math.Sqrt(x));
for (int factor = 1; factor < max; factor++)
{
if(x % factor == 0)
{
yield return factor;
if(factor != max)
yield return x / factor;
}
}
}
В клещах. При факторинге число 20, каждое 5 раз:
GetFactors1-5,445,881GetFactors2-4,308,234GetFactors3-2,913,659При разложении числа 20000 по 5 раз каждый:
GetFactors1-5,644,457GetFactors2-12,117,938GetFactors3-3,108,182