НОК через простые множители - C#
Формулировка задачи:
Добрый день! Такая проблем, что нужно найти нок через разложение на простые множители вот так я раскладываю на простые множители, но как вычеркнуть не нужные не понимаю... можно попробовать не выводить на экран, а добавлять в массив, но опять таки не знаю, как реализовать чтобы 2 массива объединились..
ПРимер
разложим 441=3·3·7·7 и 700=2·2·5·5·7.
Теперь составим произведение из всех множителей, участвующих в разложениях данных чисел: 2·2·3·3·5·5·7·7·7. Исключим из этого произведения все множители, одновременно присутствующие в обоих разложениях (такой множитель только один – это число 7): 2·2·3·3·5·5·7·7. Таким образом, НОК(441, 700)=2·2·3·3·5·5·7·7=44 100.
Console.WriteLine("Введите первое число"); int i = 2; int t = Int32.Parse(Console.ReadLine()); while (i <= t) { if (t % i == 0) { Console.WriteLine(i); t = t / i; if (t > 1) Console.WriteLine("*"); } else i = i + 1; } int k = Int32.Parse(Console.ReadLine()); i = 2; while (i <= k) { if (k % i == 0) { Console.WriteLine(i); k = k / i; if (k > 1) Console.WriteLine("*"); } else i = i + 1; }
Решение задачи: «НОК через простые множители»
textual
Листинг программы
class Program { public static void Main() { int A = 441; int B = 700; int tmpA = A; int tmpB = B; int NOK = 1;// палюбэ int iA = 2;// нас интересуют числа больше 1-го while (iA <= tmpA) { //-------------ищем множетель числа A. if (tmpA % iA != 0) { iA++; continue; } // проверяем не является ли он так же делителем и для числа B если нет нок увеличиваем число A уменьшаем if (tmpB % iA != 0)// если l А { while (tmpA % iA == 0) { NOK *= iA; tmpA /= iA; } continue; } //в противном случае, находим максимально число вхождений найденого делителя в обоих числах, и так как нас интересуют только простые числа, делим каждае число на общий делитеь до тех пор пока оно делится int count = 0; while (tmpA % iA == 0 || tmpB % iA == 0) { count++; if (tmpA % iA == 0) { tmpA /= iA; } if (tmpB % iA == 0) { tmpB /= iA; } } NOK *= (int)Math.Pow(iA, count);// умножаем нода, на наш делитель count раз (тобишь возводим в степень) iA++; } // ------------------С числом А разобрались. //-------------- Разбираемся с тем что осталось от числа B int iB = 2;// можно конечно и не заводить еще переменные, но так понятние, что откуда... // все общие простые делители мы уже обработали, так что здесь это делать не имеет смысла while (iB <= tmpB) { if (tmpB % iB != 0) { iB++; continue; } while (tmpB % iB == 0) { NOK *= iB; tmpB /= iB; } iB++; } //---------------- C B Разобрались... //Выводим результат Console.WriteLine("НОК для чисел {0} и {1} равен {2}", A, B, NOK); Console.ReadLine(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д