Die Zahl "100 Fakultät" hat über 105 Stellen. unsigned long long geht aber nur bis 18446744073709551615. Das reicht also bei weitem nicht.
Um 100! binär darzustellen bräuchtest du ceil(log(factorial(100))/log(2)) = 525 Bit. Und in C ist (unsigned) long long mit 64 Bit der größte Integer-Datentyp.
Und genau das ist vermutlich der Sinn der Aufgabe: Du sollst an die Grenzen einiger Programmiersprachen kommen.
Gleitkommazahlen sind bei großen Werten ungenau, deshalb kannst du die hier nicht benutzen.
Also:
Möglichkeit 1:
Du überlegst dir selbst einen Datentyp für große Zahlen (z.B. ein char-Array) und schreibst dazu Operator-Funktionen (du brauchst nur Multiplikation).
Möglichkeit 2:
Du benutzt eine Library für große Zahlen, z.B.
GMP.
Bei 1 musst du "viel" programmieren, bei 2 viel Doku lesen. Da du C lernen willst, solltest du beides mal machen.
Kleiner Tipp: Du kannst bei Möglichkeit 1 die Multiplikation durch wiederholte Additionen simulieren - das reicht für deine Zwecke völlig und Addition ist einfacher zu Programmieren als Multiplikation.
Lesezeichen