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!!!
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.
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.
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 ....
//============================================================================
// 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...
//============================================================================
//by niu
#include <iostream>
using namespace std; //Para usar los cout y cin
bool omirp (int numero) {
if (numero==2 || numero==3 || (numero%2!=0 && numero%3!=0)){ //Si el numero no es par ni impar... supongo q esto es omirp
if (numero>9){
unsigned short int m_numero [1]; // Considero hasta 99, o como los doy vulta?
/* ejemplo, de lo que sigue... tengo un numero 17
* m_numero[0]=7
* m_numero[1]=1
* numero=70+1 // 7*10+1
*/
m_numero[0]=numero%10;
m_numero[1]=(numero-m_numero[0])/10;
numero=m_numero[0]*10+m_numero[1];
}
return true;
}else return false;
}
int main (){
for (int i=0;i<101;i++){
if (omirp(i))cout<<i<<" ";
}
return 0;
}
mmm nada q decir, saludos gente.
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.
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.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int is_prime(double v)
{
if(v == 1)
return 0;
double i;
for(i = (unsigned) sqrt(v); i > 1; i--)
if(!fmod(v, i)) return 0;
return 1;
}
int isomirp(int n)
{
if(is_prime(n) == 0)
return 0;
char *p = NULL;
unsigned i = 0;
for(; n > 0; p = realloc(p, ++i), p[i - 1] = (n % 10) + 48, n /= 10);
if(is_prime(atoi(p)))
{
free(p);
return 1;
}
else
{
free(p);
return 0;
}
}
int main(void)
{
unsigned i;
for(i = 1; i <= 10000; i++)
if(isomirp(i))
printf("%d\n", i);
return EXIT_SUCCESS;
}
Cita de: 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.
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
Cita de: brkpnt en 17 Julio 2011, 18:58 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...
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();}
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