/// <summary> /// Добавляет ряд к стриму /// </summary> /// <param name="sw">поток записи куда добавляется группа</param> /// <param name="lastGroup">последнии цифры предыдущей группы</param> /// <param name="natur">натйральные числа</param> /// <param name="numGroup">номер группы которую добавляем</param> /// <returns>Массив чисел которые были добавлены в группу</returns> private int[] WriteGroupToStream(StreamWriter sw, int[] lastGroup, NaturNum natur, int numGroup) { List <int> tempGroup = new List <int>(); for (int i = 0; i < lastGroup.Length; i++) { if (lastGroup[i] * 2 > num) { break; } natur.Reset(); foreach (int nat in natur) { int currNum = nat * lastGroup[i]; if (currNum > num) { break; } if (natur.group(currNum) <= 1) { sw.Write(" " + currNum); tempGroup.Add(currNum); natur.group(currNum, numGroup); } } } tempGroup.Sort(); return(tempGroup.ToArray()); }
/// <summary> /// Записывает ряды в файл /// </summary> /// <param name="fileName">Имя файла куда записать</param> public void WriteStrem(string fileName) { int group = GetNumGroups(); NaturNum natur = new NaturNum(num); using (StreamWriter sw = new StreamWriter(fileName)) { int[] lastGroup = new int[1]; lastGroup[0] = 1; sw.Write(" 1"); for (int numGroup = 1; numGroup <= group; numGroup++) { sw.WriteLine(); lastGroup = WriteGroupToStream(sw, lastGroup, natur, numGroup); } } }