Estás en: Inicio >> Foros >> Informática >> Programación
Programación /

Ayuda con C

Participa en el tema Ayuda con C en el foro Programación.
Buenas, necesitaba una ayudita con un programa que tengo que realizar les paso a detallar ...

Buscar en este tema:
 
  •  
    #1 Ayuda con C
    Buenas, necesitaba una ayudita con un programa que tengo que realizar les paso a detallar si alguno me puede dar una mano ya que soy nuevo en este lenguaje.
    necesito un programa que utilice arreglos matriciales de 50 filas y 10 columnas, que se cargue los numeros primos comenzando del numero 1. Para ello deberan entonces ingresar en la matriz los primeros 500 numeros primos. se puede o no armar función para determinar si un numero es primo o no


    A medida que se vayan cargando las celdas de la matriz deberán ir imprimiendo el nro primo en cuestión.


    el que me pueda ayudar se lo agradecere muchisimo.
    +
     
    0
    Me gusta
     
    http://www.psicofxp.com/forums/programacion.313/971277-ayuda-con-c.html
    | Más
  • #2 Re: Ayuda con C

    Te doy unas ideas:
    1) Para ver si un número es primo o no, basta con ver si es divisible por todos los anteriores que hayas ingresado en la matriz, excepto el 1.
    2) Tendrías que generar los primos de esa manera e ir ubicándolos secuencialmente en la matriz.
    3) Para determinar la fila y columna de la matriz donde se guardarán, si N es el número de secuencia (empezando por 0, no por 1) del número primo P, se determinan la fila y la columna de la matriz con estas fórmulas:
    Fila = N / 10
    Columna = N % 10 (% significa "resto")
    4) Determinadas fila y columna, se guarda allí el número P:
    matriz[Fila][Columna] = P
    Me gusta este mensaje
  • #3 Re: Ayuda con C

    Aqui esta el codigo jeje cualquier duda me dices.....

    #include<iostream.h>
    void main()
    {
    int alto,cont,i,num,x,y;
    num=1;
    alto=x=y=0;
    int matriz[10][50];
    while(alto<500)
    {
    cont=0;
    for(i=1;i<=num;i++)
    {
    if(num%i==0)
    cont++;
    }
    if(cont<=2)
    {
    matriz[x][y]=num;
    x++;
    if(x==10)
    {
    x=0;
    y++;
    }
    cout<<num<<" ";
    alto++;
    }
    num++;
    }

    /**Esta parte te ayuda a saber que si son 500 numeros los que se meten en la matriz**/
    cout<<"\n\n"
    <<alto<<"\n\n";
    /************************************************** *************/

    /*********Esta poarte te ayuda a coprobar que la matriz si esta llena************/
    for(i=0;i<50;i++)
    for(cont=0;cont<10;cont++)
    cout<<matriz[cont][i]<<" ";
    /************************************************** *************/
    }
    Me gusta este mensaje
  • #4 Re: Ayuda con C

    te lo re agradesco. cualquier cosa que necesites me dices
    Me gusta este mensaje
  • #5 Re: Ayuda con C

    Originalmente publicado por Kryptonyte Ver mensaje
    Te doy unas ideas:
    1) Para ver si un número es primo o no, basta con ver si es divisible por todos los anteriores que hayas ingresado en la matriz, excepto el 1.
    2) Tendrías que generar los primos de esa manera e ir ubicándolos secuencialmente en la matriz.
    3) Para determinar la fila y columna de la matriz donde se guardarán, si N es el número de secuencia (empezando por 0, no por 1) del número primo P, se determinan la fila y la columna de la matriz con estas fórmulas:
    Fila = N / 10
    Columna = N % 10 (% significa "resto")
    4) Determinadas fila y columna, se guarda allí el número P:
    matriz[Fila][Columna] = P
    Un numero primo es aquel que solo es divisible por 1 y por si mismo, lo que significa que todos los numeros primos nunca seran divisibles por 2, 3, 5 y 7, si es divisible por alguno de ellos entonces no es primo...

    Saludos
    Pablo
    Me gusta este mensaje
  • #6 Re: Ayuda con C

    Originalmente publicado por chuy52000 Ver mensaje
    Aqui esta el codigo jeje cualquier duda me dices.....

    #include<iostream.h>
    void main()
    {
    int alto,cont,i,num,x,y;
    num=1;
    alto=x=y=0;
    int matriz[10][50];
    while(alto<500)
    {
    cont=0;
    for(i=1;i<=num;i++)
    {
    if(num%i==0)
    cont++;
    }
    if(cont<=2)
    {
    matriz[x][y]=num;
    x++;
    if(x==10)
    {
    x=0;
    y++;
    }
    cout<<num<<" ";
    alto++;
    }
    num++;
    }

    /**Esta parte te ayuda a saber que si son 500 numeros los que se meten en la matriz**/
    cout<<"\n\n"
    <<alto<<"\n\n";
    /************************************************** *************/

    /*********Esta poarte te ayuda a coprobar que la matriz si esta llena************/
    for(i=0;i<50;i++)
    for(cont=0;cont<10;cont++)
    cout<<matriz[cont][i]<<" ";
    /************************************************** *************/
    }
    Me tome el atrevimiento de optimizar un poquito el código...
    Quedaría asi:
    Código:
    #include <iostream>
    #include <math.h>
    using namespace std;
    int main()
    {
     int alto,cont,i,num,x,y;
     num=1;
     alto=x=y=0;
     int matriz[10][50];
     while(alto<500)
     {
      cont=0;
      for(i=2;i<=sqrt(num);i++)
      {
       if(num%i==0)
       {
        cont++;
        break;
       }
      }
      if(cont<=0)
      {
       matriz[x][y]=num;
       x++;
       if(x==10)
       {
        x=0;
        y++;
       }
       cout<<num<<" ";
       alto++;
      }
      num++;
     }
     
     /**Esta parte te ayuda a saber que si son 500 numeros los que se meten en la matriz**/
     cout<<"\n\n"
      <<alto<<"\n\n";
     /************************************************** *************/
     
     /*********Esta poarte te ayuda a coprobar que la matriz si esta llena************/ 
     for(i=0;i<50;i++)
      for(cont=0;cont<10;cont++)
       cout<<matriz[cont][i]<<" ";
     /************************************************** *************/
     return 0;
    }
    
    Basta con verificar hasta la raíz cuadrada del número... si ningún número es divisible, entonces el número es primo...
    Editado por elcordoba - 21.10.2009 16:44 hs.
    Me gusta este mensaje
  • #7 Re: Ayuda con C

    Originalmente publicado por ExtrañoInocente Ver mensaje
    Un numero primo es aquel que solo es divisible por 1 y por si mismo, lo que significa que todos los numeros primos nunca seran divisibles por 2, 3, 5 y 7, si es divisible por alguno de ellos entonces no es primo...

    Saludos
    Pablo
    Solo una aclaración, ya que el comentario presta a confusión... No es condición suficiente verificar que si un número es divisible por 2,3,5 y 7 para determinar si es primo o no. Puede que no sea divisible por esos números pero sea divisible por un primo mayor...
    Por ejemplo el número 793 no es divisible por 2,3,5 ni 7, sin embargo no es primo porque es divisible por 61.
    UN NUMERO PRIMO ES AQUEL QUE SOLO ES DIVISIBLE POR 1 Y POR SI MISMO
    Me gusta este mensaje
  • #8 Re: Ayuda con C

    Originalmente publicado por elcordoba Ver mensaje
    Basta con verificar hasta la raíz cuadrada del número... si ningún número es divisible, entonces el número es primo...
    Basta con usar el método que puso Kryptonite en el segundo mensaje.
    Me gusta este mensaje
  • #9 Re: Ayuda con C

    El método que indiqué no es óptimo, pero es simple y funciona. Más eficiente es, como dijeron, buscar hasta la raíz cuadrada del número.
    Pero después de todo, no pensé que ése fuera el problema principal de quien inició el tema, sino en cambio el de asignar números de fila y de columna de la matriz, que se resuelve con las fórmulas que di, y que también se puede resolver con unos "if" de forma más eficiente (porque evitaría la división, una operación costosa).

    Una sugerencia, muchachos: cuando alguien pregunte cosas de este tipo, no le demos el código, sino las ideas que llevan a escribir ese código. A la larga, eso le resultará más provechoso.
    Me gusta este mensaje
  • #10 Re: Ayuda con C

    Lo que quedó perdido es lo de probar dividirlo entre los números que ya estén en el array. Sí, sólo hacerlo mientras tal número sea menor o igual a la raíz cuadrada del que se prueba es más eficiente.
    Me gusta este mensaje
Estás en: Inicio >> Foros >> Informática >> Programación


Estadísticas del tema
  • 9 RESPUESTAS
  • 297 VISTAS
  • 6 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB