Logo elrincondelc.com
curso de programación en c
Foros de programación en C
Inicio :: Código fuente

Valoración
6

Comprobar si un número es primo

codigo enviada por: gorkau
Sencillo programa que comprueba si un número es primo.
/*INVESTIGACION DE UN NUMERO RESPECTO A SI ES NUMERO PRIMO*/
#include<stdio.h>

int main()
{
      long Num,divisor=2;       
      printf("t Introducir el Numero = ");
      scanf("%ld",&Num);
      while(divisor<Num)
       {  while( Num % divisor != 0)
          divisor=divisor+1;
          if(Num== divisor)                                
           printf("t %ld es PRIMO n",Num);    
           else
      printf("t%ld NO es PRIMO ,pues ES  multiplo de %ld n",Num,divisor);    
      break;
      }
      return 0;
}
22 comentarios | Etiquetas: primos
para mi esta malll
(lia 2007-05-22 00:32:33)
yo lo hice así usando una funcion... además, el tuyo está mal... o al menos a mi no me funciona... tengo 16 años, y tengo menos de un mes con C... además es mi primer lenguaje.. #include _stdio.h_ int esPrimo (int a) { int b, contador = 0; for ( b=a ; b_=1 ; ) { if (a % b == 0) { contador++; } b -= 1; } if ( contador _= 2 ) { printf ("el numero %i es primon", a); } else { printf ("el numero %i NO es primon", a); } return 0; } int main () { int num; printf ("introduce un numero "); scanf ("%i", &num); esPrimo (num); }
(wellingtom 2007-10-07 21:55:27)
Esta bien el codigo, que ustedes esten chaquetos y no sepan como funciona es otra cosa.
(lan_mvo 2007-10-25 20:48:04)
se puede resumir un poco el codigo pero esta bien. ademas si queres que sea mas rápido (porque si el usuario coloca un numero muuuy grande va a demorar mucho tiempo en calcular si es primo o no) hay una propiedad interesante. sea el numero n que se desea saber si es primo o no, y sea r=raiz cuadrada de n, solo basta con verificar con los numeros menores o iguales a r si dividen a n. esto hace que el programa corra mas rapido, por ejemplo, si te dan el numero 1.000.000 solo hace falta verificar si los numeros desde 2 hasta raiz cuadrada de 1.000.000 (1000) dividen a 1.000.000, para ver si es primo.
(icecoolinux 2007-11-26 17:19:56)
hola gorkau y demás usuarios, a decir verdad no he podido probar el código, no tengo c a la mano,pero me parece que el método empleado no es el más adecuado, te recomiendo que consideres la propuesto por icecoolinux o. más aún, usa congruencias por medio del teorema de wilson es mucho más efectivo, éxitos. Además me parece de mal gusto el comentario de los "nuevos", para ser honesto yo también estoy a nivel de "hola mundo" en c jeje,pero nunca está de más considerar la opinión de los demás sin importar su experiencia, aunque en este caso creo que si se aplica la filosofía platónica de que del tiempo se tiene más sabiduría.
(marco capó 2008-03-10 07:38:58)
#include _stdio.h_ #include _stdlib.h_ main(){ int n,i,aux; int a=0; printf ("nIngrese un Numero: "); scanf ("%d",&n); for (i=2;i_=n/2;i++){ aux=n%i; if(aux==0){ a=1; i=n/2; } } if(a==0){ printf ("nEl Numero Es Primo."); } if(a==1){ printf ("nEl Numero No Es Primo."); } printf ("nn"); system ("pause"); } Asi es mi codigo... Muy buen aporte Gorkau ;)
(raxlazo 2009-04-14 20:15:42)
El programa parece estar bueno, pero no por lo menos a mi no me funciona al ingresar el numero 2... soi nuevo en esto pero no se si se puede considerar que este bueno el programa.. de todas formas gacias por el aporte... con los demas numeros funciona bien, excepto el 1y2.
(xiko_braulio 2009-05-26 14:08:06)
#include_iostream.h_ void main(void) { int n,i,j,cont=0; cout__"ingrese la cantidad maxima de primos: "; cin__n; for(i=1;i_=n;i=i+1) { for(j=1;j_=i;j=j+1) { if((i%j)==0) {cont=cont+1;} } if(cont_=2) { cout__i__",";} cont=0; } }
(resalinasr 2009-06-23 11:02:01)
a mi si me funciono. ¿Por qué dicen que esta mal?
(many.jose 2009-08-03 12:33:36)
a mi no me corrio
(james 2009-11-14 19:40:07)
Desde el Punto de Vista Didáctico está muy bueno para explicar el funcionamiento de "while", por otro lado no todos tenemos la misma´Lógica. Gracias a todos. Si alguen me puede ayudar con un programa en C++ que simule la gestión de mensajes de texto para celulares, mucho le agradeceré...
(arivers 2010-02-12 04:32:45)
A mi me corrío hasta con otra sintaxis, la logica del programa es perfecta.
(mapax 2010-04-11 17:47:40)
es cierto el codigo esta algo muy grande para algo tan sencillo, es mejor hacerlo con la logica mas sencilla yo hice el mismo programa, el cambio es que declare a numero como un entero lo dividi entre 2 y al ser un numero entero el programa lo guarda sin decimales, entonces el numero que resta lo multiplico por 2 y compruebo si el numero nuevo es igual al numero inicial si es asi es primo sino no es primo
(german_elnica 2010-07-04 21:53:37)
tambien lo hice con el residuo hice que lo dividera hasta que el residuo sea igual o menor que cero si es cero es es primo sino no es primo
(german_elnica 2010-07-04 21:55:28)
aunq es parecido a lo que el esta haciendo, ya que hice un for y una variable temp para estarlo dividiendo
(german_elnica 2010-07-04 21:56:28)
el while debiera preguntar si es ==0
(freestyle90886 2010-10-17 09:22:50)
En efecto esta bien, sin embargo, podría incrementarse la velocidad de ejecución si el bucle actuase mientras divisor sea menor o igual a la mitad del numero introducido, ya que a partir de este valor, los divisores son los mismos, solo que alterando el orden. Esto tendría especial interés al hacer un estudio de un número grande.
(iostream 2010-11-29 07:07:09)
ESte codigo no compila (tiene error en la linea 17)
(krebakabezas 2011-08-16 11:24:01)
bueno yo lo hice de esta manera main() { int p=1,num=0,x=1; printf("introdusca un numero"); scanf("%d",&num); do { if(num%x==0) { p=p.x; } x++; } while(x_=o); if(p==num) { printf("esprimo"); } else { printf("no es primo"); } }
(israel7 2011-10-13 08:14:43)
es eficaz pero utilizar la raíz cuadrada es otro recurso,que una persona tenga 16 años y que dice estar mal que lo justifique con un séudo, por lo menos yo al realizar un programa lo realizo en una hoja para analizarlo, y no perder tiempo al frente de la maquina cuando primero no se que se tiene que hacer, esto es matemática tiene varias resoluciones, otra cosa es que compilador utilizan yo lo realice y funciona pero ya lo tenia resuelto cuando tenia el borland 2.0 :. saludos chicos no hay que juzgar hay que compartir el conociemiento y diferentes tipos de métodos.
(cristianN 2012-02-15 21:46:18)
falto a lo ultimo para algunos que no les funciona, colocar antes del return 0; el getch(); por lo tanto se tiene que incluir control i/o ,conio.h y ya esta hay que aprender a ayudarse al uno con el otro.
(cristianN 2012-02-15 21:51:01)
http://www.elrincondelc.com/nuevorincon/index.php?pag=codigos&id=215 mira mi codigo para identificar números primos
(xhico 2012-05-08 21:12:45)

Para enviar comentarios debes estar registrado.

(c) ElRincondelC.com

Un proyecto de Urlan Heat : proyectos de Internet y soporte para el comercio electrónico.