void setup() {
Serial.begin(9600); // initialize serial communication
}
void loop() {
int n = 100; // number to calculate factorial of
const int MAX_DIGITS = 200; // maximum number of digits to store
int digits[MAX_DIGITS]; // array to store digits of result
int num_digits = 1; // variable to store number of digits in result
digits[0] = 1; // set first digit to 1
// calculate factorial
for(int i=2; i<=n; i++){
// multiply each digit by i
int carry = 0;
for(int j=0; j<num_digits; j++){
int product = digits[j] * i + carry;
digits[j] = product % 10;
carry = product / 10;
}
// add any remaining carry to new digits
while(carry > 0){
digits[num_digits] = carry % 10;
carry /= 10;
num_digits++;
}
}
// print result to serial monitor
Serial.print("100! = ");
for(int i=num_digits-1; i>=0; i--){
Serial.print(digits[i]);
}
Serial.println();
while(1); // loop indefinitely
}