Llenar matriz con números primos en C++

En este post aprenderás cómo rellenar una matriz (y si fuera un array o arreglo también sería posible) de números primos; es decir, llenar toda la matriz con números pero siempre y cuando sean primos.

Lo haremos en lenguaje C++ aunque debería funcionar de igual modo en otro lenguaje. Simplemente vamos a usar una función que dice si un número es primo y luego usarla para rellenar el arreglo de dos dimensiones.

Función de número primo

Esta función (ya expuesta anteriormente en mi blog) recibe un número y devuelve un booleano indicando si el número es primo:

bool esPrimo(int numero) {
  // Casos especiales
  if (numero == 0 || numero == 1 || numero == 4)
    return false;
  for (int x = 2; x < numero / 2; x++) {
    if (numero % x == 0)
      return false;
  }
  // Si no se pudo dividir por ninguno de los de arriba, sí es primo
  return true;
}

Rellenando matriz

Ahora vamos a rellenar la matriz. Primero declaramos un contador que nos servirá para ir llenando la matriz de números primos, pues no todos lo son.

Así que cada que recorramos la matriz haremos un ciclo while infinito que se romperá solo si se encuentra un número primo (vamos a probar con el contador).

De este modo no vamos a repetir números y nos vamos a asegurar de que todos sean primos.

El código queda así:

int matriz[5][5];
int contador = 1;
for (int x = 0; x < 5; x++) {
  for (int y = 0; y < 5; y++) {
    while (true) {
      contador++;
      if (esPrimo(contador)) {
        matriz[x][y] = contador;
        break;
      }
    }
  }
}

Después imprimimos el arreglo para comprobar que realmente funciona:

// imprimir

for (int x = 0; x < 5; x++) {
  std::cout << "\n";
  for (int y = 0; y < 5; y++) {
    std::cout << matriz[x][y] << " ";
  }
}

Poniendo todo junto

Entonces todo el código queda así:

/*
  ____          _____               _ _           _       
 |  _ \        |  __ \             (_) |         | |      
 | |_) |_   _  | |__) |_ _ _ __ _____| |__  _   _| |_ ___ 
 |  _ <| | | | |  ___/ _` | '__|_  / | '_ \| | | | __/ _ \
 | |_) | |_| | | |  | (_| | |   / /| | |_) | |_| | ||  __/
 |____/ \__, | |_|   \__,_|_|  /___|_|_.__/ \__, |\__\___|
         __/ |                               __/ |        
        |___/                               |___/         
    
    Blog:       https://parzibyte.me/blog
    Ayuda:      https://parzibyte.me/blog/contrataciones-ayuda/
    Contacto:   https://parzibyte.me/blog/contacto/
    
    Copyright (c) 2020 Luis Cabrera Benito
    Licenciado bajo la licencia MIT
    
    El texto de arriba debe ser incluido en cualquier redistribución
*/

#include <iostream>

bool esPrimo(int numero) {
  // Casos especiales
  if (numero == 0 || numero == 1 || numero == 4)
    return false;
  for (int x = 2; x < numero / 2; x++) {
    if (numero % x == 0)
      return false;
  }
  // Si no se pudo dividir por ninguno de los de arriba, sí es primo
  return true;
}

int main() {
  int matriz[5][5];
  int contador = 1;
  for (int x = 0; x < 5; x++) {
    for (int y = 0; y < 5; y++) {
      while (true) {
        contador++;
        if (esPrimo(contador)) {
          matriz[x][y] = contador;
          break;
        }
      }
    }
  }
  // imprimir

  for (int x = 0; x < 5; x++) {
    std::cout << "\n";
    for (int y = 0; y < 5; y++) {
      std::cout << matriz[x][y] << " ";
    }
  }
}

Al ejecutarlo, la salida es correcta. Se puede observar que cada elemento de la matriz tiene un número primo distinto, es decir, tenemos a los primeros 25 números primos:

Llenar arreglo – matriz con números primos en C++

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *