Pages

lunes, 28 de enero de 2013

Determinar si un número es primo Codigo Fuente en C++

Problema
Diseñar un algoritmo que me permita ingresar cualquier número y determinar si el número ingresado es primo.

Solución
  • Entrada: 19
  • Salida:   Si es número primo
Codigo Fuente en C++
#include <iostream>
using namespace std;
int main(){
   int a=0,i,n;
         cout<<"Ingrese numero"<<endl;
         cin>>n;
         for(i=1;i<(n+1);i++){
         if(n%i==0){
             a++;
            }
         }
         if(a!=2){
              cout<<"No es Primo";
            }else{
                cout<<"Si es Primo";
         }
    return 0;
}

38 comentarios:

  1. No es diferente con los números negativos. Si el numero es negativo, basta convertirlo en positivo. Después de cin>>n; poner:
    if(n<0){n=n*(-1)}

    ResponderEliminar
    Respuestas
    1. Se puede convertir en positivo con abs () también más fácil // es decir número absoluto

      Eliminar
    2. Se puede convertir en positivo con abs () también más fácil // es decir número absoluto

      Eliminar
  2. Hay otra opcion. En el caso que quieras generar números primos, sería:
    int i=2;
    do {
    while( (i<n)&&(n%i!=0) ) {i++;}
    }
    //xxx
    while {i<=num};
    En este caso generará varios numeros primos que componga el numero N deseado.
    en lugar de (//xxx) poned lo que deseáis hacer con el pograma.

    ResponderEliminar
  3. si es negativo solo pon n = abs(n) xd saludos o/

    ResponderEliminar
  4. Y si quiero saber si un numero cercano a 2^31 -1 (int) es primo o no, pero que no tarde como 10 segundos en calcularlo??

    ResponderEliminar
  5. se puede hacer lo mismo con un bucle while en vez de un for?

    ResponderEliminar
  6. Que tal buenos dias

    Como puedo hacer que pregunte si quiero ingresar otro numero y si, si ejecutar otra vez el programa y si no terminarlo

    ResponderEliminar
  7. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  8. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  9. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  10. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  11. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  12. #include stdio.h

    using namespace std;

    void main()
    {

    int num=1;
    int i=0;
    int count=0;

    printf("Bienvenido al programa que le indica si un numero es o no primo.\n\n");
    while(num!=0){
    printf("Introduzca un numero:");
    scanf("%d",&num);

    for(int i=1;i<num+1;i++){

    if(num%i==0){
    count++;
    }
    }
    if(count!=2){
    printf("NoPrimo\n");
    }
    else{
    printf("Primo\n");
    }

    count=0;

    }
    printf("\nGracias por utilizar este programa.\n\n");


    }

    ResponderEliminar
  13. bool ComprobarSiEsPrimo(unsigned A){

    unsigned contador = 2;

    while (contador <= unsigned(sqrt(A)) && (A%contador != 0)){

    contador++;

    }
    if (A == 2) return true; // lo añado como excepcion, pues no se detecta como primo
    if (A%contador == 0){
    return false;
    } else {
    return true;
    }

    }

    Este fragmento de codigo te puede servir, si lo implementas, solo tendrias que usarlo como una funcion, donde el parametro A, es el que se evalua para saber si es primo. Si el numero a evaluar es primo, devolvera true, sino false.
    #nota: para usarlo deberias incluir las librerias y . Cmath te sirve para la raiz de un numero (la funcion sqrt(n)).
    Un saludo! :)

    ResponderEliminar
  14. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  15. como se hace con funciones??

    ResponderEliminar
  16. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  17. En esta parte del código:
    for(i=1;i<(n+1);i++){
    if(n%i==0){
    a++;
    }
    }
    No es necesario que el for haga "n" ciclos, bastaría con la mitad "n/2"
    for(i=1;i<(n+1)/2;i++) ya que la segunda mitad serían números mayores a la mitad del ingresado, al dividir ninguno da resto 0 :w

    ResponderEliminar
  18. // numero primo

    #include
    using namespace std;

    int main() {

    int a;
    int b;
    int c;
    int num;
    cout<<"Digite un numero \n";
    cin>>num;
    a=num%2;
    b=num%3;
    c=num%5;
    if(num>5){
    if(a!=0 && b!=0 && c!=0){
    cout<<"El numero es primo";
    }else{
    cout<<"El numero No es primo";
    }
    }else{
    if(num==1 || num==4){
    cout<<"El numero No es primo";
    }else{
    cout<<"El numero es primo";
    }
    }

    return 0;
    }
    pues asi lo pense, no se si valga.

    ResponderEliminar
  19. esta chingadera no funciona ijodetuputamadre
    qlo

    ResponderEliminar
  20. no es cierto amigo 1000 disclpas sorry yo te amo <dos+uno

    ResponderEliminar
  21. visita la pagina http://edgeweb.com.mx

    ResponderEliminar
  22. que sucede si le quiero agregar funciones y que dentro del mismo codigo me diga si un numero es par o impar, que me de el factorial y la potencia sera posible?

    ResponderEliminar
  23. tengo este codigo y queria meterle funciones y no pude alguien me puede ayudar a meterle unas tres funciones pero que haga lo mismo




    #include
    #include
    #include
    #include
    #include
    #include
    int main(){
    using namespace std;

    int ciclo=0,cambiante=1,y=1,x=0,a=0;
    int m=0,n=0,l=1,too=0,nooo=0,pari=0,nopari=0,mayor=0,menor=100000;
    int resultado=0,resultados=0;
    int arr[100];
    cout<>ciclo;
    cout<>arr[x];
    cout<=1){
    r=r*temp;
    temp--;
    }
    cout<<" El factorial de "< mayor){
    mayor=arr[d];
    }
    if (arr[d]< menor){
    menor=arr[d];
    }

    }
    printf(" El mayor es %d\n", mayor);
    cout<<endl;
    printf(" El menor es %d\n", menor);
    cout<<endl;
    cout<<"***************jabz solorio**************************";
    cout<<endl<<endl;
    return 0;
    }

    ResponderEliminar
  24. #include
    #include
    #include
    #include
    #include
    #include
    int main(){
    using namespace std;

    int ciclo=0,cambiante=1,y=1,x=0,a=0;
    int m=0,n=0,l=1,too=0,nooo=0,pari=0,nopari=0,mayor=0,menor=100000;
    int resultado=0,resultados=0;
    int arr[100];
    cout<>ciclo;
    cout<>arr[x];
    cout<=1){
    r=r*temp;
    temp--;
    }
    cout<<" El factorial de "< mayor){
    mayor=arr[d];
    }
    if (arr[d]< menor){
    menor=arr[d];
    }

    }
    printf(" El mayor es %d\n", mayor);
    cout<<endl;
    printf(" El menor es %d\n", menor);
    cout<<endl;
    cout<<"***************jabz solorio**************************";
    cout<<endl<<endl;
    return 0;
    }

    ResponderEliminar
  25. como seria el código de un numero feliz en c++

    ResponderEliminar
  26. Gracias al k a escrito la linea de codigo me salvo de mi tarea gracias

    ResponderEliminar
  27. Gracias bro por la repuesta me salvaste de una tarea

    ResponderEliminar
  28. amigos tengo un problema necesito un código para saber si un numero es primo o no, pero debo hacerlo sin sentencias de control,puedo utilizar todos los operadores que quiera, pero ninguna sentencia de control NO if, for etc.
    LES AGREDE SERIA MUCHO SU AYUDA

    ResponderEliminar
  29. como hago dos digitos con numeros primos con switch

    ResponderEliminar