%swi-prolog
fizzbuzz(N) :- fizzbuzz(N, 0).
fizzbuzz(N, M) :-
M < N, M1 is M+1,
M1 mod 15 =:= 0,
write('FizzBuzz '),
fizzbuzz(N, M1).
fizzbuzz(N, M) :-
M < N, M1 is M+1,
M1 mod 5 =:= 0,
write('Buzz '),
fizzbuzz(N, M1).
fizzbuzz(N, M) :-
M < N, M1 is M+1,
M1 mod 3 =:= 0,
write('Fizz '),
fizzbuzz(N, M1).
fizzbuzz(N, M) :-
M < N, M1 is M+1,
write(M1), write(' '),
fizzbuzz(N, M1).
fizzbuzz(N, N).