Foros del Web » Programación para mayores de 30 ;) » Programación General »

MVisual C++ - No funciona!

Estas en el tema de MVisual C++ - No funciona! en el foro de Programación General en Foros del Web. Hola. necesito que alguien me ayude porque estoy tratando de que compile un archivo que tiene que informar todos los pares de numeros primos que ...
  #1 (permalink)  
Antiguo 23/03/2005, 07:30
Avatar de loka-por-racing  
Fecha de Ingreso: noviembre-2002
Ubicación: buenos aires
Mensajes: 55
Antigüedad: 22 años
Puntos: 0
MVisual C++ - No funciona!

Hola. necesito que alguien me ayude porque estoy tratando de que compile un archivo que tiene que informar todos los pares de numeros primos que uno resulte de: n*2+1 .. x ej. 3-7 -> 3*2+1=7 .. y todos menores que 1000.
Pero cuando compilo, lo linkeo, y le pongo ejecutar no lo hace pone los numeros pero los que no son primos tambien.. aca les dejo el codigo.. si alguien me puede ayudar por favor que es un trabajo que tengo que entregar el jueves (mañana) no se ya mas como hacer..

Código:
#include <stdio.h>

int primo_o_no (int n)  /* si devuelve 1 es primo y si devuelve 0 no es primo */
{
	int i;
	int e;
	if ((n==1)||(n==2)||(n==3))
		return 1; /* es primo */
	else
		return 1;
		for (i=4; i<=1000; i=i+2)  /* siendo i>=2 voy de 2 en 2 y el numero que da no es primo */
		{
			if (n==i)
				return 0;  /* no es primo */
			if(i==4)
				for (e=6; e<=1000; e=e+3) /* siendo i=3 voy de 3 en 3 y el numero que da no es primo */
					if (n==e)
						return 0; /* no es primo */
		}
}

void main (void)
{
	int p;
	int n=1;
	printf ("Pares de numeros primos menores que 1000: \n");
	while (n<=499) /* para no pasarme de 1000 xq 499*2+1=999 */
	{
		if (primo_o_no(n)==1)
		{
			p=n*2+1;
			if (primo_o_no(p)==1)  /* comparo el consecutivo y si es muestro */
				printf("%d-%d  ",n,p);
		}
		n++;
	}
}
  #2 (permalink)  
Antiguo 23/03/2005, 07:51
 
Fecha de Ingreso: diciembre-2002
Mensajes: 23
Antigüedad: 21 años, 11 meses
Puntos: 0
Un problema es que la funcion primo_o_no siempre devuelve 1:

Código:
if ((n==1)||(n==2)||(n==3))
   return 1; /* es primo */
else
   return 1;
	for ( ...
Tienes que ejecutar primero el for y solo despues de este devolver 1 con 'return 1;'

Un saludo
  #3 (permalink)  
Antiguo 23/03/2005, 08:26
Avatar de loka-por-racing  
Fecha de Ingreso: noviembre-2002
Ubicación: buenos aires
Mensajes: 55
Antigüedad: 22 años
Puntos: 0
gracias!!.. ahora si.. lo unico que hay valores que los sigue poniendo, pero tiene que ver con la funcion que toma algunos multiplos de 5..

Mil Graciass. por responder!!!!

Saludos
Yas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:11.