fun prime(n)= let exception NeitherPrimeNorComposite; exception NegativeNumber; fun smallestdivisor(n) = let fun finddiv(n,tester)=if tester*tester > n then n else if n mod tester = 0 then tester else finddiv(n,tester+2); in finddiv(n,3) end; in if n=1 then raise NeitherPrimeNorComposite else if n<0 then raise NegativeNumber else if n=2 then true else if n mod 2 = 0 then false else if n = smallestdivisor(n) then true else false end;