Das Problem ist das erzeugen von Antworttexten in deiner Funktion. Das macht man nicht. Stattdessen gibt die einen Wahrheitswert zurueck, und in main wird entsprechend ein Text erzeugt.
Das break kommt nach einem return, und ist damit unerreichbar. Denn natuerlich bricht der return auch den Loop ab.
Die negativen Eingaben wuerde ich per assert unterbinden. Ganze sind keine natuerlichen Zahlen. Die Sonderfaelle 0, 1 wuerde ich mit expliziten if's abfangen.