11,581,515 members (63,904 online)

# Algorithms

 View All Threads First Prev Next
 The six rightmost non-zero digits of 1000000! Rod Gowdy2-Jul-08 4:50 Rod Gowdy 2-Jul-08 4:50
 Re: The six rightmost non-zero digits of 1000000! [modified] Robert.C.Cartaino2-Jul-08 6:33 Robert.C.Cartaino 2-Jul-08 6:33
 The last six non-zero digits of 1,000,000! are 412544. Please, keep your money. I wrote this code to calculate your answer: ```// Calculate the least significant (non-zero) digits of large factorials. // By Robert C. Cartaino // Posted via http://www.codeproject.com // 02-July-2008 using System;   class Program { const ulong Target = 1000000; // This is the number you are trying to find the factorial of. const ulong RoundOff = 10000000000; // This rounds off the answer so the intermediate results don't overflow. static void Main(string[] args) { ulong factorial = 1;   // Iterate through all numbers up to 'Target', multiply by each to find the factorial of 'Target'. for (ulong n = 1; n <= Target; n++) { factorial *= n;   // Remove the trailing zeros. while (factorial % 10 == 0) { factorial /= 10; }   // We only need the right-most digits. factorial %= RoundOff;   //Console.WriteLine("{0}! = {1}", n, factorial); }   Console.WriteLine("{0}! (truncated) = {1}", Target, factorial); } }``` Why it works: When multiplying numbers, the trailing zeros at the end will not change the outcome... so I threw those out. Also, if you are only interested in the least significant digits, then the upper-most digits will not have an effect on the outcome of the lower digits... so I threw those out. With all the rounding, I didn't have to worry about overflow so I was able to calculate the "truncated factorials" of very large numbers iteratively. Enjoy, Robert C. Cartaino modified on Wednesday, July 2, 2008 1:26 PM
 Re: The six rightmost non-zero digits of 1000000! Rod Gowdy3-Jul-08 3:42 Rod Gowdy 3-Jul-08 3:42
 Re: The six rightmost non-zero digits of 1000000! Robert.C.Cartaino3-Jul-08 10:06 Robert.C.Cartaino 3-Jul-08 10:06
 Last Visit: 31-Dec-99 18:00     Last Update: 6-Jul-15 13:21 Refresh 1