--AUTOR: Jose Luis VILLARIG GARCIA (V2975813) 472542@cepsz.unizar.es --FICHERO: Primos.adb --PROYECTO: Ejercicio Intr. Programacion --FECHA: Octubre-Noviembre 1999 --Modidicado por: --Fecha modificacion: --Descripcion: Este programa haya 'cantidad' numeros primos a partir de un --cierto numero n (cantidad y n son introducidos por el usuario) with Ada.text_io, Ada.integer_text_io, Ada.float_text_io; use Ada.text_io, Ada.integer_text_io, Ada.float_text_io; procedure primos is --------------------------------------------------------- --PROPOSITO: Funcion para hallar la raiz cuadrada de un numero -- x : in float -- Pre: x es un numero real -- Post: (hallaRaiz = Raiz Cuadrada entera de N) function raizCuadrada (x:float) return integer is --declaración de constantes y variables g,h: float; begin g := 0.0; h := 1.0; While g /= h loop g := h; h := 0.5 * (g+ x/g); end loop; return integer(h); end raizCuadrada; -- declaracion de constantes y variables j, n ,i ,cantidad, raiz: integer; begin j := 1; put ("Introduce cuantos numeros primos quieres: "); get (cantidad); put ("Introduce a partir de que numero: "); get (n); If n <= 2 then put ("2 "); j := 2; n := 3; elsif n mod 2 = 0 then n := n-1; --para poder ir de 2 en 2, ya que todos end if; --los numeros primos son impares salvo 2 while j <= cantidad loop i := 2; raiz := raizCuadrada(float(n)); while i < raiz AND n mod i /= 0 loop i := i+1; end loop; if n mod i /= 0 then put (n,0); put (" "); new_line; j := j+1; end if; n := n+2; end loop; end primos;