Pascal/Turbo Pascal - Bucles for con lista?

   
Vista:

Bucles for con lista?

Publicado por Priack (1 intervención) el 07/01/2008 13:35:28
Hola y antes de todo gracias por molestarse en leer este post.
Lo que necesito es bastante sencillo(creo) pero no se si existe algun comando que ejecute esa opcion.
Yo tengo un bucle for del estilo
For i:=2 to 19 do ....
Bien, lo que quiero es que en vez de ir de 2 a 19 haciendo 2,3,4,5,6,7,8..... necesito que solo compruebe los numeros primos, osease 2,3,5,7,11,13,17,19. Supongo que se podría hacer poniendo:
If (i=2) or (i=3) or(i=5) or (i=7) or (i=11) or (i=13) or (i=17) or (i=19) then....
Pero es algo largo y poco productivo por tanto agradeceria cualquier sugerencia.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Bucles for con lista?

Publicado por Diego Romero (997 intervenciones) el 07/01/2008 15:35:36
¿Cuál es la condición de salida del bucle?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Bucles for con lista?

Publicado por Laysquad (47 intervenciones) el 07/01/2008 16:26:21
hola que tal^^, pues facil, debes hacer un procedimiento que determine si un numero es primo^^, ¿pero como hacermos esto?, pues ¿como sabemos que un numero es primo?
respuesta: porque su division no es exacta siendo el divisor un numero menor a dicho numero a verificar es decir:

5 es primo? si? porque? porque: 5/2 (no es exacto) 5/3 (no es exacto) 5/4 (no es exacto)

ahora vamos al procedimiento ;

function primo(numero: integer) :bollean ;
var
cont : integer ;

begin
if numero > 3 then
begin
primo := true ; {reiniciamos la validación}
for cont := 2 to numero-1 do {para no verificar el numero con 1}
begin
if frac(numero/cont) = 0 then {si el numero es divisible dentro de cont}
begin
primo := false ;
cont := numero-1 ; {para salir del bucle}
end ; {si no sucede esto quiere decir que el numero es primo} ;
end ;
end
else primo := true ; {asi no debemos verificar los numeros 0 1 2 y 3}
end ;

ahora ya tienes tu funcion, pero ¿como la utilizas?
esta funcion devolvera el valir true si es primo y false si no

para utilizarla solo escribes lo siguiente : {como ejemplo}

if primo(15) = true then writeln('el numero es primo) ;
if primo(15) = false then writeln('el numero no es primo) ;

o incluso puedes utilizar variables de teipo entero o menor
var
numerito :integer ;

if primo(numero) = true then writeln(numerito,'es un numero primo') ;
if primo(numero) = false then writeln(numerito,' no es un numero primo') ;

espero que te halla servido, si tiene algun error que no lo creo, por favor avisame^^, Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar