Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: nigarcia en 17 Julio 2011, 03:57 am



Título: Programa que muestre los numeros OMIRP
Publicado por: nigarcia en 17 Julio 2011, 03:57 am
Necesito crear un programa en C o en Java que muestre los numeros OMIRP que son los numeros primos reversibles, como por ejemplo el 7 y el 17...

Es urgente y agradeceria cualquier ayuda posible.

GRACIAS!!!


Título: Re: Programa que muestre los numeros OMIRP
Publicado por: ralymontes en 17 Julio 2011, 04:08 am
Hola:

Aqui nadie le ahce la tarea a nadie, lee las reglas.

Intentalo tú y presenta tu avance y ya vemos en qué andas bien y en qué andas mal.

Saludos, raly.


Título: Re: Programa que muestre los numeros OMIRP
Publicado por: Valkyr en 17 Julio 2011, 14:20 pm
Yo en java lo realicé y no era muy complicado. En el caso que yo lo hice de primeras te decía un número y entonces te pedía decir cuantos había hasta llegar a ese número.

Hazte una función que te compruebe si un número es OMIRP y para no tener que hacer la comprobación dos veces (es decir, sí un número es OMIRP su reverso también lo es, por tanto cuando llegues al reverso tendrías que volver a comprobar sí es) lleva un array de booleanos por ejemplo. Sí un número es OMIRP marcas a true su posición y la de su reverso. A la hora de comprobar si un número es OMIRP primero miras en dicho array, si está a true no haces nada, si está a false compruebas si lo es.

Saludos y ya sabes, hazlo tu que aquí no se escriben los códigos a los demás.


Título: Re: Programa que muestre los numeros OMIRP
Publicado por: _niu en 17 Julio 2011, 15:28 pm
va contra las reglas hacerle el ejercicio a alguien?  :P ... yo tambien toy aprendiendo el c++ asique espero que te funque.
Si lo queres en java es casi igual, en ves de bool usas boolean, y en salida System.out.println("lo que queres q imprima"); sacas el include y el using namespace. jejejejeje
Los sabios diran si estoy errado.

Espero que leas lo que hice almenos  >:D ....
Código
  1. //============================================================================
  2. // Necesito crear un programa en C o en Java que muestre los numeros OMIRP que
  3. // son los numeros primos reversibles,como por ejemplo el 7 y el 17...
  4. //============================================================================
  5.  
  6. //by niu
  7.  
  8. #include <iostream>
  9. using namespace std; //Para usar los cout y cin
  10.  
  11. bool omirp (int numero) {
  12. if (numero==2 || numero==3 || (numero%2!=0 && numero%3!=0)){ //Si el numero no es par ni impar... supongo q esto es omirp
  13. if (numero>9){
  14. unsigned short int m_numero [1]; // Considero hasta 99, o como los doy vulta?
  15. /* ejemplo, de lo que sigue... tengo un numero 17
  16. * m_numero[0]=7
  17. * m_numero[1]=1
  18. * numero=70+1  // 7*10+1
  19. */
  20. m_numero[0]=numero%10;
  21. m_numero[1]=(numero-m_numero[0])/10;
  22. numero=m_numero[0]*10+m_numero[1];
  23. }
  24. return true;
  25. }else return false;
  26.  
  27. }
  28.  
  29. int main (){
  30. for (int i=0;i<101;i++){
  31. if (omirp(i))cout<<i<<" ";
  32. }
  33. return 0;
  34. }
  35.  

mmm nada q decir, saludos gente.


Título: Re: Programa que muestre los numeros OMIRP
Publicado por: pucheto en 17 Julio 2011, 15:55 pm
Por rompebolas nomas, "//Si el numero no es par ni impar... supongo q esto es omirp" si pasa esto, en los enteros, ese numero no existe...

Ademas... si no es divisible por 2, y no es divisible por 3, puede ser divisible por 5 y no ser primo, entonces no ser OMIRP.


Título: Re: Programa que muestre los numeros OMIRP
Publicado por: leogtz en 17 Julio 2011, 18:47 pm
Yo haría primero una pequeña comprobación para ver si n es par, si es par retorno 0, inmediatamente. Pero primero hay que hacer una función para comprobar si n es primo, si es primo proceder con la siguiente comprobación.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int is_prime(double v)
  5. {
  6.    if(v == 1)
  7.    return 0;
  8.    double i;
  9.  
  10.    for(i = (unsigned) sqrt(v); i > 1; i--)
  11.        if(!fmod(v, i)) return 0;
  12.  
  13.     return 1;
  14. }
  15.  
  16. int isomirp(int n)
  17. {
  18.    if(is_prime(n) == 0)
  19.    return 0;
  20.  
  21.    char *p = NULL;
  22.    unsigned i = 0;
  23.    for(; n > 0; p = realloc(p, ++i), p[i - 1] = (n % 10) + 48, n /= 10);
  24.    if(is_prime(atoi(p)))
  25.    {
  26.        free(p);
  27.        return 1;
  28.    }
  29.    else
  30.    {
  31.        free(p);
  32.        return 0;
  33.    }
  34. }
  35.  
  36. int main(void)
  37. {
  38.    unsigned i;
  39.    for(i = 1; i <= 10000; i++)
  40.    if(isomirp(i))
  41.    printf("%d\n", i);
  42.  
  43. return EXIT_SUCCESS;
  44. }
  45.  


Título: Re: Programa que muestre los numeros OMIRP
Publicado por: _niu en 17 Julio 2011, 18:58 pm
Por rompebolas nomas, "//Si el numero no es par ni impar... supongo q esto es omirp" si pasa esto, en los enteros, ese numero no existe...

Ademas... si no es divisible por 2, y no es divisible por 3, puede ser divisible por 5 y no ser primo, entonces no ser OMIRP.

jajajaja.... me adueñe del ejercicio ahora. Entonces no tiene q ser divisible por 2 ni por 3, ni por 5,  y ya ta? Ahora me fijo en la wiki como se determina bien si es o no omirp

Tenes razon el comentario ese que hice... jajajaja la flashee



Título: Re: Programa que muestre los numeros OMIRP
Publicado por: pucheto en 17 Julio 2011, 19:02 pm
jajajaja.... me adueñe del ejercicio ahora. Entonces no tiene q ser divisible por 2 ni por 3, ni por 5,  y ya ta? Ahora me fijo en la wiki como se determina bien si es o no omirp

Tenes razon el comentario ese que hice... jajajaja la flashee
Un numero primo es un numero que es divisible por 1 y por si mismo...


Título: Re: Programa que muestre los numeros OMIRP
Publicado por: sauce19 en 18 Julio 2011, 00:53 am
hola! yo tambien necesito mostrar los numeros omirp en c++, esto es lo q tngo hasta ahora, si alguien sabe q m hac falta o q stoy haciendo mal, seria de mucha ayuda ...

#include<conio.h>
#include<stdio.h>
void  main(){
clrscr();
int c,omirp;
int i=0; /*un contador para los numeros encontrados*/
int n=2; /*numeros primos*/
int q=1; /*numeros por los que se divide n*/
printf("escribir la cantidad de numeros primos q quieres ver:");
scanf("%d",&c);
printf("\n\n");

while (i<c){ /*cantidad de numeros a imprimir*/
if (n>=q){
q++;
if (((n%q)==0)&&(n!=q)){ /*esto es si no es primo*/
n++;
q=1;}
if(((n%q)==0) && (n==q)){ /*este es si es primo*/
printf("%d,", n);
n++;
i++;
q=1;
}}

else n++;}

printf("\n");
printf("los numeros omirp son:\n");
if((n=='13')||(n=='17')||(n=='37')||(n=='79')){
printf("%d",n);
}


getche();}


Título: Re: Programa que muestre los numeros OMIRP
Publicado por: PiroskY en 18 Julio 2011, 04:58 am
hace una funcion que reciba un numero y devuelva un bool dependiendo si es primo o no
dalo vuelta y volveselo a dar a esa funcion, si las dos veces dio true es porque es omirp