Лучший способ найти все факторы данного числа

Все числа, которые делятся равномерно на х.

Я положил в 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

Ответы на вопрос(12)

Ваш ответ на вопрос