Обнулить те строки в двумерном массиве, где находится наибольшее простое число. - C#
Формулировка задачи:
Решить задачу
Задана матрица A(n,m). Обнулить те строки, где находится наибольшее простое число. Вывести сообщение, если простых чисел нет.
Решение задачи: «Обнулить те строки в двумерном массиве, где находится наибольшее простое число.»
textual
Листинг программы
using System; using System.Text; namespace ConsoleApplication5 { class Program { static void Main() { Console.Write("N="); var n = Convert.ToInt32(Console.ReadLine()); Console.Write("M="); var m = Convert.ToInt32(Console.ReadLine()); var array = RandomMatrix(n, m); DisplayMatrix(array); for (var i = 0; i < n; ++i) if (CheckRow(array, i)) ZeroRow(array, i); Console.WriteLine("==================="); DisplayMatrix(array); Console.ReadKey(); } public static int[,] RandomMatrix(int n, int m) { var result = new int[n, m]; var generator = new Random(); for (var i = 0; i < n; i++) for (var j = 0; j < m; j++) result[i, j] = generator.Next(); return result; } static bool CheckRow(int[,] matrix, int rowIndex) { var isPrime = false; for (int j = 0, m = matrix.GetLength(1); j < m; ++j) if (PrimeTools.IsPrime(Math.Abs(matrix[rowIndex, j]))) { isPrime = true; break; } return isPrime; } static void ZeroRow(int[,] matrix, int rowIndex) { for (int j = 0, m = matrix.GetLength(1); j < m; ++j) matrix[rowIndex, j] = 0; } public static void DisplayMatrix(int[,] matrix) { var builder = new StringBuilder(); for (var i = 0; i < matrix.GetLength(0); ++i) { for (var j = 0; j < matrix.GetLength(1); ++j) { if (j > 0) builder.Append(' '); builder.Append(matrix[i, j]); } builder.AppendLine(); } Console.Write(builder.ToString()); } } static class PrimeTools { public static bool IsPrime(int n) { if ((n & 1) == 0) return n == 2; for (var i = 3; i * i <= n; i += 2) if ((n % i) == 0) return false; return n != 1; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д