euler-ada/seven.adb

44 lines
1.1 KiB
Ada

--
-- Project Euler problem #7
--
-- By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see
-- that the 6th prime is 13.
--
-- What is the 10001st prime number?
--
with Ada.Numerics.Elementary_Functions,
Ada.Text_IO;
use Ada.Numerics.Elementary_Functions,
Ada.Text_IO;
procedure Seven is
function Is_Prime (Input : in Natural) return Boolean is
-- Using the "Trial Division" method detailed in this Wikipedia entry:
-- https://secure.wikimedia.org/wikipedia/en/wiki/Prime_number#Trial_division
Ceiling : constant Natural := Natural (Sqrt (Float (Input)));
begin
for Index in 2 .. Ceiling loop
if (Input mod Index) = 0 then
return false;
end if;
end loop;
return true;
end Is_Prime;
Count : Natural := 0;
begin
for N in 2 .. Natural'Last loop
if Is_Prime (N) then
Count := (Count + 1);
if Count = 10_001 then
Put_Line (Natural'Image (N) & " is prime");
return;
end if;
end if;
end loop;
end Seven;