|
|
La Taberna Un lugar para conversar sobre casi cualquier tema |
|
Thread Tools | Display Modes |
11-04-2014, 06:59 PM | #1 |
Master
Join Date: Dec 2008
Location: Herbred
Posts: 252
|
Ayuda informática
Buenas a todos;
El profesor de informática de mi facultad nos asignó un problema que consistía en escribir un programa en C que, dado un número n por el usuario, imprimiera en pantalla nos n primeros números primos; por ejemplo, si el usuario teclea el número 5, aparecerían en pantalla los números 2,3,5,7,11 que son los 5 primeros números primos. Bien, yo he escrito un código que creo debería funcionar, pero parece que el ordenador no cree lo mismo entonces sería de gran ayuda que alguien me dijera que está fallando o que error estoy cometiendo; les dejo el código: ----------------------------------------------------- #include<stdio.h> int main() { int x=3; //numero de inicio para ir obteniendo los primos int d=2; //divisor (que ira aumentando de 1 en 1) int n; //numero de primos que el usuario quiere int c=1; //contador de primos printf("Introduzca la cantidad de numeros primos que desea: "); scanf("%d", &n); if(n==0) printf("No hay numeros primos"); if(n==1) printf("2 \n"); if(n>1) { printf("2 \n"); while(c!=n) { while(x%d!=0 && x>=d) { if(x%d!=0 && x==d-1) printf("%i \n", x); else d=d+1; } if(x%d==0) c=c; else c=c+1; x=x+1; } printf("fin"); } system("pause"); } Muchas gracias!!
__________________
COPENHAGEN Jamming
|
11-04-2014, 08:45 PM | #2 |
Apprentice
Join Date: Mar 2010
Location: Algasborg
Posts: 50
|
este esta mas claro
Code:
#include <stdio.h> int main() { int primos_por_mostrar, posible_primo, divisor; int es_primo; printf("Cuantos primos desea mostrar: "); scanf("%d", &primos_por_mostrar); posible_primo = 2; while (primos_por_mostrar > 0) { /* determinar si posible_primo es primo */ es_primo = 1; /* true */ for (divisor = 2; divisor < posible_primo; ++divisor) { if (posible_primo % divisor == 0) { es_primo = 0; /* false */ break; } } /* mostrar el numero * y actualizar el contador */ if (es_primo) { printf("%d ", posible_primo); primos_por_mostrar--; } posible_primo++; } printf("\n"); return 0; } |
11-04-2014, 08:56 PM | #3 |
Initiate
Join Date: Jul 2008
Posts: 160
|
en c es asi,
#include<stdio.h> int main() { int x=3; //numero de inicio para ir obteniendo los primos int d=2; //divisor (que ira aumentando de 1 en 1) int n; //numero de primos que el usuario quiere int c=1; //contador de primos printf("Introduzca la cantidad de numeros primos que desea saber: \n"); scanf("%d",&n); if(n==0) printf("No hay numeros primos"); if(n==1) printf("El numero primo es: 2 "); if(n>1) { printf("Los numeros primos son : 2-"); while(c!=n) { if(x%d!=0){ printf("%d-", x);c++;} x=x+1; } printf("fin"); } } estabas complicandote de mas, solo necesitas un bucle que corte cuando encontras la cantidad pedida, y el if que verifique que sean primos, te los muestre y sume al contador y aumentar x en el bucle! si tenes alguna duda mandame mp! |
11-04-2014, 09:53 PM | #4 | |
Master
Join Date: Dec 2008
Location: Herbred
Posts: 252
|
Quote:
Muchisimas gracias a los 2, me quedo con el de alepk porque me pareció mas sencillo el código, ahí te mando un mp preguntandote 2 cositas. Gracias!
__________________
COPENHAGEN Jamming
|
|
11-04-2014, 11:01 PM | #5 |
Initiate
Join Date: Nov 2012
Location: Zona de Guerra
Posts: 222
|
y el regnum? donde esta el regnum en todo esto?? jajaj XD
__________________
Dj Drago Caza Esquelio 60 - Gdragonoid Brujo Esquelio 53 |
11-05-2014, 01:18 PM | #6 |
Count
Join Date: Sep 2008
Posts: 1,690
|
Lo cuestión es siempre que pretende el ejercicio. Se busca cualquier solución que funcione o se busca una solución eficaz?
Lo que están haciendo con los codigos de arriba es probar una por una todos los numeros hasta n si son primos o no. Ya se pueden imaginar que este algoritmo no anda muy rapido. La otra solución clasica sería esa http://es.wikipedia.org/wiki/Criba_de_Erat%C3%B3stenes que trabaja más rapido pero requiere más memoria y a parte de esos dos existen varios algoritmos más modernos y obviamente mas rapidos en el calculo pero tambien algo mas complejos |
11-05-2014, 02:05 PM | #7 | |
Master
Join Date: Dec 2008
Location: Herbred
Posts: 252
|
Quote:
__________________
COPENHAGEN Jamming
|
|
11-05-2014, 02:21 PM | #8 | |
Count
Join Date: Sep 2008
Posts: 1,690
|
Quote:
No se en que cantidad para n piensas pero si usas tal numero que hace llenar la memoria de una compu el primer algoritmo de probar cada numero tardaria cientos o miles de años en terminar jaja |
|
11-07-2014, 08:07 PM | #9 |
Initiate
Join Date: Jul 2008
Posts: 160
|
como ya le avise por mp al creador del post en mi programa fuente me comí un for, acá esta corregido por si alguno mas le interesa
#include<stdio.h> int main() { int x=3; //numero de inicio para ir obteniendo los primos int d=2; //divisor (que ira aumentando de 1 en 1) int n; //numero de primos que el usuario quiere int c=1; //contador de primos printf("Introduzca la cantidad de numeros primos que desea saber: \n"); scanf("%d",&n); if(n==0) printf("No hay numeros primos"); if(n==1) printf("El numero primo es: 2 "); if(n>1) { printf("Los numeros primos son : 2-"); while(c!=n) { if(x%d!=0){ for(d=2;d<x;d++){ if(x%d==0){x++;d=2;}} printf("%d-", x);c++;} x=x+1; } printf("fin"); } } |
Thread Tools | |
Display Modes | |
|
|