% Prolog program to print out Roman numerals toroman(0). toroman(N) :- N < 4, put("I"), M is N - 1, toroman(M). toroman(N) :- N = 4, put("I"), put("V"). toroman(N) :- N = 5, put("V"). toroman(N) :- N < 9, put("V"), M is N - 5, toroman(M). toroman(N) :- N = 9, put("I"), put("X"). toroman(N) :- N < 40, put("X"), M is N - 10, toroman(M). toroman(N) :- N < 50, put("X"), put("L"), M is N - 40, toroman(M). toroman(N) :- N < 90, put("L"), M is N - 50, toroman(M). toroman(N) :- N < 100, put("X"), put("C"), M is N - 90, toroman(M). toroman(N) :- N < 400, put("C"), M is N - 100, toroman(M). toroman(N) :- N < 500, put("C"), put("D"), M is N - 400, toroman(M). toroman(N) :- N < 900, put("D"), put("D"), M is N - 500, toroman(M). toroman(N) :- N < 1000, put("C"), put("M"), M is N - 900, toroman(M). toroman(N) :- N < 4000, put("M"), M is N - 1000, toroman(M). % The procedure generate(N) prints out the Roman numerals for 1 through N. % genhelper keeps track of how many numbers are left to print. genhelper(_,0). genhelper(N,NLeft) :- toroman(N), nl, !, M is N + 1, NewNLeft is NLeft - 1, genhelper(M,NewNLeft). generate(N) :- genhelper(1, N).