Add solution to problem seven
This commit is contained in:
parent
6404449d6d
commit
c8f5f74bb3
|
@ -0,0 +1,43 @@
|
|||
--
|
||||
-- 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;
|
Loading…
Reference in New Issue