Как разбить программу на потоки?

Нам дали задание: Написать многопоточную программу (количество потоков должно соответствовать возможному количеству потоков для вычислительной машины). Программа: Разложение каждого числа от 1 до N на простые множетели (я записываю множетели в List)

    private static int GetPrimalDevideNumber(int number)
    {
        for (int i = 2; i < number * number; i++)
        {
            if (number % i == 0)
            {
                return i;
            }
        }
        return 1;
    }
    private static List<int> Decomposition(int number)
    {
        List<int> primalNumbers = new List<int>();
        primalNumbers.Add(1);
        while (number != 1)
        {
            int primalNum = GetPrimalDevideNumber(number);
            primalNumbers.Add(primalNum);
            number /= primalNum;        
        }
        return primalNumbers;
    }
    private static int ReadIntegerNumberFromConsole()
    {
        return Convert.ToInt32(Console.ReadLine());
    }
    static void Main(string[] args)
    {            
        int n = ReadIntegerNumberFromConsole();
        for (int i = 1; i < n+1; i++)
        {
            Console.Write(i + ": ");
            foreach (var primalNumber in Decomposition(i))
            {
                Console.Write(primalNumber + " ");
            }
            Console.WriteLine();
        }
    }
}

И в общем, как это можно разбить на потоки? Чтобы каждый поток выполнял паралелльно метод Decomposition? То есть мне нужно заранее создать массив потоков, дабы в for я проходился по каждому, давая новое значение, а как тогда поток будет действовать если он еще не успел выполнить Decomposition а я уже поручаю ему выполнить метод опять с новым значением?


Ответы (0 шт):