Click here to Skip to main content
       

Algorithms

 
GeneralRe: I know, PinmvpCPallini3-Jul-08 0:53 
AnswerRe: NORMSDIST function Pinmember73Zeppelin3-Jul-08 2:11 
QuestionRe: NORMSDIST function PinmvpCPallini3-Jul-08 2:29 
AnswerRe: NORMSDIST function Pinmember73Zeppelin3-Jul-08 3:19 
GeneralRe: NORMSDIST function Pinmembersumit70343-Jul-08 2:47 
GeneralRe: NORMSDIST function PinmemberMember 82494620-Dec-11 23:54 
GeneralThe six rightmost non-zero digits of 1000000! PinmemberRod Gowdy2-Jul-08 4:50 
GeneralRe: The six rightmost non-zero digits of 1000000! [modified] PinmemberRobert.C.Cartaino2-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

GeneralRe: The six rightmost non-zero digits of 1000000! PinmemberRod Gowdy3-Jul-08 3:42 
GeneralRe: The six rightmost non-zero digits of 1000000! PinmemberRobert.C.Cartaino3-Jul-08 10:06 
QuestionSpecify numbers as product of Primes? PinmemberIan Uy25-Jun-08 19:37 
AnswerRe: Specify numbers as product of Primes? Pinmembercp987625-Jun-08 21:32 
GeneralRe: Specify numbers as product of Primes? PinmemberIan Uy26-Jun-08 0:42 
AnswerRe: Specify numbers as product of Primes? PinmemberRobert.C.Cartaino26-Jun-08 4:48 
GeneralRe: Specify numbers as product of Primes? PinmemberIan Uy26-Jun-08 4:50 
GeneralRe: Specify numbers as product of Primes? PinmemberThe Developer8-Aug-08 7:03 
GeneralRe: Specify numbers as product of Primes? PinmemberIan Uy26-Jun-08 6:28 
GeneralRe: Specify numbers as product of Primes? PinmemberPaul Conrad28-Jun-08 5:44 
GeneralRe: Specify numbers as product of Primes? PinmemberIan Uy28-Jun-08 5:46 
GeneralRe: Specify numbers as product of Primes? PinmemberPaul Conrad28-Jun-08 6:11 
GeneralRe: Specify numbers as product of Primes? PinmemberRavi Bhavnani8-Aug-08 7:16 
GeneralRe: Specify numbers as product of Primes? Pinmembercp987628-Jun-08 20:27 
GeneralRe: Specify numbers as product of Primes? PinmvpLuc Pattyn29-Jun-08 2:42 
GeneralRe: Specify numbers as product of Primes? PinmemberMarkBrock27-Jun-08 18:46 
GeneralRe: Specify numbers as product of Primes? PinmemberPaul Conrad28-Jun-08 5:42 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.


Advertise | Privacy | Mobile
Web04 | 2.8.140721.1 | Last Updated 12 Jul 2014
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid