Hint: You can edit your post, highlight your code and press the <> formatting button.
You can use the preview button at the bottom to see how it looks.
I found the second link to be the most help.
The problem comes from the number that can be stored in a given variable type.
You may define the number as a "long long" in "main", but the function is expecting an "int". some of the number is lost when you try to store a "long long" into an int.
long long number = 123456782122;
another issue is that some (most, all? darn if i know) need numerical suffixes to work properly. EG
long long number = 123456782122ull; //the ull is needed to prevent some compilers from making the value (int) first and then copying it into the long long (due to how constants are typeless and it has to guess the type, and some compilers just guess (int) here)
Its part of the language and has been for some time (c-99 era? not sure?). You would have to work at it to find a compiler that did not work with them, eg the turbo 1.0 that some people use for dos 3.0 era code.