Miércoles 6 de Noviembre de 2024, 02:28
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Re: numeros primos
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Re: numeros primos (Leído 3047 veces)
essios
Miembro activo
Mensajes: 30
Re: numeros primos
«
en:
Sábado 23 de Agosto de 2003, 14:16 »
0
hola a todos. ya llevaba algun tiempo sin pasar por aqui.
a ver si alguien me echa un cable.
en realidad es un simple algoritmo. me indica si es primo o no, asi de facil.
la verdad es k a estas alturas hasta me da vergüenza preguntar estas cosas, pero para eso estamos, pa aprender.
saludos a todos.
Tweet
---------------------------------------------------------
no busques el como, sino el por qué
Astor
Miembro MUY activo
Mensajes: 112
Re: numeros primos
«
Respuesta #1 en:
Sábado 23 de Agosto de 2003, 15:39 »
0
Mira utilizando metodos convencionales no deberias tener problemas. Cuando es un numero primo ?...
Basta con que hagas un bucle desde 2 hasta n-1. Si encontras alguna division con resto 0, el numero no es primo. Si salis del bucle y nadie pudo dividirlo en forma entera -> el numero es primo.
astor@spoofing.com.ar
GTow
Nuevo Miembro
Mensajes: 21
Re: numeros primos
«
Respuesta #2 en:
Sábado 23 de Agosto de 2003, 19:28 »
0
Bueno, un matiz, si quieres ganar algo de velocidad te diré que no tienes que mirar hasta n-1, sino hasta la raiz cuadrada del numero (o el anterior si ésta no es exacta).
No sé si me explico, por ejemplo si el numero es el 10, solo tienes
GTow
Nuevo Miembro
Mensajes: 21
Re: numeros primos
«
Respuesta #3 en:
Sábado 23 de Agosto de 2003, 19:29 »
0
Bueno, un matiz, si quieres ganar algo de velocidad te diré que no tienes que mirar hasta n-1, sino hasta la raiz cuadrada del numero (o el anterior si ésta no es exacta).
No sé si me explico, por ejemplo si el numero es el 10, solo tienes que mirar hasta el 3, y efectivamente antes está el 2, asi que te dará resto cero y no será primo
Si fuera 11, como ni el 2 ni el 3 dan 0 pues si es primo. Ves que te ahorras operaciones en orden cuadrático -> Muchas más velocidad.
Siento q esté 2 veces, le he dado sin querer
Astor
Miembro MUY activo
Mensajes: 112
Re: numeros primos
«
Respuesta #4 en:
Domingo 24 de Agosto de 2003, 01:58 »
0
Me podrias explicar el metodo un poco mas detallado, porque la verdad no comprendo que es lo que realmente terminas evaluando para saber si un numero es o no primo.
Podrias, si no es mucha molestia, explicarme nuevamente el ejemplo con 10 y 11 ?
astor@spoofing.com.ar
plaf
Miembro activo
Mensajes: 57
Re: numeros primos
«
Respuesta #5 en:
Domingo 24 de Agosto de 2003, 04:33 »
0
#include<stdio.h>
#include<math.h>
int main(){
int i,esprimo;
float numero, div;
while(1){
printf("nnTengo hambre, dame un numero: ");
scanf("%f",&numero);
esprimo=1;
for(i=2; i <= sqrt(numero) && esprimo; i++)
{
div=numero/(float)i;
if(div-(int)div==0) esprimo=0;
}
if(esprimo) printf("Gracias, estaba muy primo es numero:)");
else printf("PUAJ!! ESTE NUMERO ES DIVISIBLE POR %d!!!",i-1);
}
}
plaf
Miembro activo
Mensajes: 57
Re: numeros primos
«
Respuesta #6 en:
Domingo 24 de Agosto de 2003, 04:51 »
0
de hecho podrias hacerlo el doble de eficiente haciendolo saltarse los pares (probar con 2 y despues empezar el for en 3 saltando de 2 en 2). y no se, empieza a probar lo q se te ocurra
GTow
Nuevo Miembro
Mensajes: 21
Re: numeros primos
«
Respuesta #7 en:
Domingo 24 de Agosto de 2003, 13:55 »
0
Creo que con el Ejemplo que te han puesto ya no hace falta que te especifique más, PERO, saca la raiz del bucle, que sinó en caso de que el número sea grande vas a repetir la misma operación muchas veces, y si nos ponemos con la eficiencia...., pues eso. En cualquier caso si necesitas más explicación dilo
JuanK
Miembro de ORO
Mensajes: 5393
Nacionalidad:
Re: numeros primos
«
Respuesta #8 en:
Lunes 25 de Agosto de 2003, 14:10 »
0
Bueno, este es el que uso actualmente, y creo que esta bastante optimizado, sin embargo si se puede más me cuentan, si alguien no lo entiende me avisa y lo explico, no es dificil, pero de primera impresion podria serlo.
Código: Text
#include<stdio.h>
int main()
{
int n,primo=0,cont=2;
clrscr();
printf("nDigite el numero a evaluar: ");
scanf("%d",&n);
if(n !=1 && n !=2 && n!=3)
{
while((cont <= (n/2)+1 ) && n%cont!=0)
cont++;
if(n%cont==0)
printf("nEl numero NO es primo");
else
printf("nEl numero SI es primo");
}
else
printf("nEl numero SI es primo");
getch();
}
Suerte
Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io
Arsys
Miembro activo
Mensajes: 26
Re: numeros primos
«
Respuesta #9 en:
Miércoles 27 de Agosto de 2003, 15:04 »
0
¿Como se haría para encontrar los numeros primos dentro de un intervalo de numeros?
Por ejemplo, para saber los numeros primos del 1 al 100.
Saludos
JuanK
Miembro de ORO
Mensajes: 5393
Nacionalidad:
Re: numeros primos
«
Respuesta #10 en:
Miércoles 27 de Agosto de 2003, 16:53 »
0
usa esto
Código: Text
while((cont <= (n/2)+1 ) && n%cont!=0)
cont++;
dentro de otro ciclo que te vaya haciendo los incrementos de n.
Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io
GTow
Nuevo Miembro
Mensajes: 21
Re: numeros primos
«
Respuesta #11 en:
Jueves 28 de Agosto de 2003, 12:05 »
0
Juank, puede ser que no haya entendido bien tu programa, pero creo que miras hasta la mitad del número. En cambio, como ya expliqué anteriormente se puede hacer hasta la raiz cuadrada de éste, con lo que te ahorras muchísimo.
Arsys
Miembro activo
Mensajes: 26
Re: numeros primos
«
Respuesta #12 en:
Jueves 28 de Agosto de 2003, 15:37 »
0
¿El 3 no es un número primo?
¿No son números primos aquellos que solo son divisibles entre si mismos para que su resto de 0?
Saludos
JuanK
Miembro de ORO
Mensajes: 5393
Nacionalidad:
Re: numeros primos
«
Respuesta #13 en:
Jueves 28 de Agosto de 2003, 15:40 »
0
si so , es porque lo dices?
por lo de la raiz...? si es por eso yo tambien tengo mis dudas. pero tengo que revisar
Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io
Arsys
Miembro activo
Mensajes: 26
Re: numeros primos
«
Respuesta #14 en:
Jueves 28 de Agosto de 2003, 16:19 »
0
Juank tu programa no funciona bien, el numero 3 es primo, sin embargo al introducirlo en tu programa dice que no es primo.
Saludos
JuanK
Miembro de ORO
Mensajes: 5393
Nacionalidad:
numeros primos
«
Respuesta #15 en:
Jueves 28 de Agosto de 2003, 17:58 »
0
Si, como de costumbre...
lo que pasa es que cuando escribo codigos pequeños, lo escribo de una vez sin compilar ni nada, por eso se me olvido colocar las 3 excepciones clasicas: 1 2 3.
En todo caso ya lo arregle y aca pego un codigo más optimizado:
Código: Text
int main()
{
int n,cont=2, primo=1;
clrscr();
printf("nDigite el numero a evaluar: ");
scanf("%d",&n);
if(n !=1 && n !=2 && n!=3)
{
while((cont <= (n/2)+1) && primo)
{
primo = n%cont;
cont++;
}
}
if(primo)
printf("nEl numero SI es primo");
else
printf("nEl numero NO es primo");
getch();
return 1;
}
Queda pendiente medir el tiempo de lo de la raiz cuadrada , porque no me convence que sea mas rapido, tampoco he mirado si funciona.
Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Re: numeros primos