Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: piyor6 en 29 Marzo 2018, 05:13



Título: crear una matriz de 10x10 de forma aleatoria con numeros primos
Publicado por: piyor6 en 29 Marzo 2018, 05:13
buenas noches amigos vengo con un problema que me tiene loco, tengo que hacer una matriz de 10x10 y llenarla con numeros aleatorios pero que sean primos, yo se como llenarlas de forma aleatoria pero no tengo ni idea de como hacerlo para que me canbie el numero que puso aleatorio por uno primo, esto es lo que llevo solo llego hasta la parte de llenar la matriz de forma aleatoria
ayuda por favoooooor  :-( :-( :-(


Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <ctime>
  4.  
  5. int main(){
  6.    int m[10][10];
  7.        srand(time(0));
  8.    for(int i=0;i<10;i++){
  9.        for(int j=0;j<10;j++){
  10.            m[i][j]=rand()%10;
  11.    }
  12. }
  13. //imprimir matriz
  14.    for(int i=0;i<10;i++){
  15.        for(int j=0;j<10;j++){
  16.        printf("%d ",m[i][j]);
  17.    }
  18.    printf("\n");
  19. }
  20. //todos los numeros estan en m[i][j]
  21. for(int i=0;i<10;i++){
  22.        for(int j=0;j<10;j++){
  23.  
  24. //me imagino que aqui se hace algo para mirar el primo
  25.  
  26.        }
  27.    }
  28.  
  29.  
  30.  
  31.    return 0;
  32. }


· Los códigos deben ir en etiquetas GeSHi
· Los temas van en su respectivo subforo (movido)
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex


Título: Re: crear una matriz de 10x10 de forma aleatoria con numeros primos
Publicado por: Yuki en 29 Marzo 2018, 05:38
Es simple, solo usá un procedimiento recursivo que retorne un número primo, te lo dejo en pseoducódigo.

Código:
Func RandByYuki():Int
   ' En este caso no es necesario inicializar las variables.
   int Ret
   int i
   bool NoEsNúmeroPrimo
   Ret = rand() % 10
   For i = 2 to (Ret - 1)
       ' Número primo = Número solo divisible por 1 y por si mismo.
       ' El operador MOD retorna el sobrante de una división, si no hay sobrante significa que no es un número primo.
       NoEsNúmeroPrimo = ((Ret Mod i) = 0)
       If NoEsNúmeroPrimo Then
           Exit For ' El número es divisible, por ende, no es un número primo, entonces salimos del bucle.
       EndIf
   Next
   If NoEsNúmeroPrimo Then
       Ret = RandByYuki() ' Se auto invoca.
   EndIf
   RandByYuki = Ret
EndFunc

Este código lo escribí acá y no se si funciona realmente, pero te deberia de dar "la mano" para que te escribas tu propio código.
PD: Que lindo pseudocódigo che...