elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programacion en C. Fallo codificar numeros primos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Programacion en C. Fallo codificar numeros primos  (Leído 9,514 veces)
nenito_sevillista

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Programacion en C. Fallo codificar numeros primos
« en: 23 Noviembre 2010, 20:36 pm »

Hola, podrían ayudarme y decimirme qué me falla en este codigo??
gracias.

Código:
void main(void)
{
/* DECLARACIÓN DE VARIABLES (Realice la tabla de objetos) */
int i;
int n;
int primo;
/* LECTURA DE DATOS */
printf("Introduzca un numero natural:");
scanf("%d",&n);
/* ALGORITMO DETERMINACIÓN NÚMERO PRIMO */
/*************INICIO CÓDIGO*****************/
i=2;
primo=0;
if(n%i==0)
{
         primo=primo+1;
         }
         else
         {
             i=i+1;
             }
           
             
/***************FIN CÓDIGO ******************/
/* ESCRITURA DE RESULTADOS */
if(primo==1) printf("El numero %d es primo",n);
if(primo==0) printf("El numero %d no es primo",n);
/* BLOQUEO DE PANTALLA*/
printf("\n");
system("pause");
}


En línea

Mr.Blue


Desconectado Desconectado

Mensajes: 441



Ver Perfil WWW
Re: Programacion en C. Fallo codificar numeros primos
« Respuesta #1 en: 23 Noviembre 2010, 20:46 pm »

Código
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4. /* DECLARACIÓN DE VARIABLES (Realice la tabla de objetos) */
  5. int i;
  6. int n;
  7.  
  8.  
  9. int primo;
  10. /* LECTURA DE DATOS */
  11. printf("Introduzca un numero natural:");
  12. scanf("%d",&n);
  13. /* ALGORITMO DETERMINACIÓN NÚMERO PRIMO */
  14. /*************INICIO CÓDIGO*****************/
  15. i=2;
  16. primo=0;
  17. if(n%i==0)
  18. {
  19. primo=primo+1;
  20. }
  21. else
  22. {
  23. i=i+1;
  24. }
  25.  
  26.  
  27. /***************FIN CÓDIGO ******************/
  28. /* ESCRITURA DE RESULTADOS */
  29. if(primo==1) printf("El numero %d es primo",n);
  30. if(primo==0) printf("El numero %d no es primo",n);
  31. /* BLOQUEO DE PANTALLA*/
  32. printf("\n");
  33. getchar ();
  34. return 0;
  35. }

No veo ninguna falla, de logica.
Por ahi te falto poner las librerias? o #include <windows.h> para system (PAUSE);
Sugerencias
Algunas cosas para tener encuenta es no usar la llamda al sistema para hacer pausa para eso tenes getchar ();, y la estuctura del main deberia ser int main () con un return al final como se ve ahi, para indicar si hubo un error o no.
declarar i =2; me parece al cohete jeje, pone
if (n%2==0) i es lo mismo y usas menos variables.
otra cosa, porq usar tantos if?

if (n%2==0)

puts ("es primo");

else puts ("no es primo");

y eliminas lineas de codigo

las declaraciones de variables puede ser asi tmb.

int i, n, primo;  separados por coma y punto y coma en la ultima variable declarada


« Última modificación: 23 Noviembre 2010, 20:55 pm por Sr.Blanco » En línea

Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: Programacion en C. Fallo codificar numeros primos
« Respuesta #2 en: 23 Noviembre 2010, 22:05 pm »

Ahi no estas averiguando si el numero es primo.
Estas averiguando si el numero es par.

Para averiguar si es primo tenes que hacer un ciclo desde 1 hasta el numero ingresado y preguntar si es divisible por cada numero.
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Programacion en C. Fallo codificar numeros primos
« Respuesta #3 en: 23 Noviembre 2010, 22:15 pm »

tenes que hacer un ciclo desde 1 hasta el numero ingresado y preguntar si es divisible por cada numero.

Error, Desde 1 hasta el número/2. A partir de numero/2, ya no va a haber más divisores de él.
En línea

Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: Programacion en C. Fallo codificar numeros primos
« Respuesta #4 en: 23 Noviembre 2010, 22:19 pm »

Código:
Error, Desde 1 hasta el número/2. A partir de numero/2, ya no va a haber más divisores de él.

Si, estaría de mas hacerlo hasta el numero.
En línea

piou

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: Programacion en C. Fallo codificar numeros primos
« Respuesta #5 en: 23 Noviembre 2010, 22:41 pm »

Ahí lo que estás mirando es si el número es divisible por 2. Me parece que querías hacer un bucle e ir subiendo, porque si no lo es le sumas 1 a la variable i, pero te has equivocado.
Tienes que hacer un bucle desde 2 hasta n/2, en cuanto el resto sea 0, activas un bool o algo y sales del bucle, porque significa que no es primo.
En línea

Darioxhcx


Desconectado Desconectado

Mensajes: 2.294


Ver Perfil
Re: Programacion en C. Fallo codificar numeros primos
« Respuesta #6 en: 23 Noviembre 2010, 23:11 pm »

Código:
#include <stdio.h>
int main () {
    int ini,cont,asd;
    printf("ingrese su numero ");
    scanf("%d",&asd);
    cont=asd-1;
    for (ini=2;ini<=cont;ini++) {
            if (asd%ini==0) { goto noprimo; }
            }
    printf("%d es primo",asd);
    getch();
    getchar();
    return 0;
    noprimo:
            printf("%d no es primo",asd);
            getch();
            getchar();
            return 0;
yo lo hice asi hace tiempo y me funciono
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Programacion en C. Fallo codificar numeros primos
« Respuesta #7 en: 23 Noviembre 2010, 23:33 pm »

Esto... Darioxhcx... permíteme que mejore un poco tu código.

Código
  1. #include <stdio.h>
  2. int main () {
  3.    int con=2,primo=1,numero;
  4.    printf("ingrese su numero ");
  5.    scanf("%d",&numero);
  6.    while(primo==1 && con < numero/2+1){
  7.        if(numero%con==0)
  8.            primo=0;
  9.        con++;
  10.    }
  11.    if(primo==1)
  12.        printf("%d es primo\n",numero);
  13.    else
  14.        printf("no es primo\n");
  15.    return 0;
  16. }
  17.  
¿Para qué usar getchar o system pause teniendo esto? -->
http://foro.elhacker.net/programacion_cc/ejecutar_programas_en_windows_sin_necesidad_de_pausas_system_pause_etc-t306837.0.html
« Última modificación: 24 Noviembre 2010, 23:07 pm por Akai » En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Programacion en C. Fallo codificar numeros primos
« Respuesta #8 en: 24 Noviembre 2010, 00:28 am »

¡Buenas!

Realmente llegar hasta n/2 es perder el tiempo. El mayor de los divisores mas pequeños es la raiz cuadrada, ya que si un divisor sobrepasa la raiz cuadrada es porque el otro factor es menor que la raiz cuadrada:

Si a * b = c y a2 > c entonces b2 < c, ya que de lo contrario a2 * b2) > c * c = c2 y esto impllica, tomando raices, que a * b > c, lo cual es una contradiccion. Por lo tanto b2 < c lo que es lo mismo que b < c1/2

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: Programacion en C. Fallo codificar numeros primos
« Respuesta #9 en: 24 Noviembre 2010, 07:58 am »

¡Buenas!

Realmente llegar hasta n/2 es perder el tiempo. El mayor de los divisores mas pequeños es la raiz cuadrada, ya que si un divisor sobrepasa la raiz cuadrada es porque el otro factor es menor que la raiz cuadrada:

Si a * b = c y a2 > c entonces b2 < c, ya que de lo contrario a2 * b2) > c * c = c2 y esto impllica, tomando raices, que a * b > c, lo cual es una contradiccion. Por lo tanto b2 < c lo que es lo mismo que b < c1/2

¡Saludos!
Claro. Esta bien de cualquiera de esas formas.

Igual no es un un super código. En ESTE caso creo que no influye mucho una cuenta mas o una cuenta menos.

 
Esto... Darioxhcx... permíteme que mejore un poco tu código.

Código
  1. #include <stdio.h>
  2. int main () {
  3.    int con=2,primo=1,numero;
  4.    printf("ingrese su numero ");
  5.    scanf("%d",&numero);
  6.    while(primo==1 && con < numero/2){
  7.        if(numero%con==0)
  8.            primo=0;
  9.        con++;
  10.    }
  11.    if(primo==1)
  12.        printf("%d es primo\n",numero);
  13.    else
  14.        printf("no es primo\n");
  15.    return 0;
  16. }
  17.  
¿Para qué usar getchar o system pause teniendo esto? -->
http://foro.elhacker.net/programacion_cc/ejecutar_programas_en_windows_sin_necesidad_de_pausas_system_pause_etc-t306837.0.html

ERROR:
Dice que 4 es un numero primo. y no lo es.


Este es mi codigo:
Código
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6. int x; //para el ciclo
  7. int num;
  8. int con=0;
  9.  
  10. cout << "Ingrese numero: ";
  11. cin >> num;
  12. //aca se puede preguntar si el numero es 1
  13. //el 1 no es primo
  14. for( x=1;x<=num;x++ )
  15. if( num%x == 0 )
  16. con++;
  17.  
  18. if( con>2 )
  19. cout << "No es primo" << endl;
  20. else
  21. cout << "Si es primo" <<endl;
  22.  
  23. return 0;
  24. }
  25.  
« Última modificación: 24 Noviembre 2010, 08:51 am por qily » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python 2.6] Funcion generadora de Numeros primos (5.761.455 primos en 19 seg)
Scripting
katas 2 9,543 Último mensaje 10 Marzo 2010, 01:50 am
por Novlucker
Problema de Programacion con numeros
Programación C/C++
Andrsz 3 2,432 Último mensaje 30 Diciembre 2013, 19:53 pm
por leosansan
programacion c++ numeros autodivisibles
Programación C/C++
bmillar 1 1,524 Último mensaje 5 Enero 2018, 17:22 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines