Article View: comp.lang.pascal.misc
Article #17Re: Tough FACTORIAL math problem...
From: John Cleland
Date: Wed, 14 Feb 1996 20:30
Date: Wed, 14 Feb 1996 20:30
35 lines
1832 bytes
1832 bytes
The Crow wrote:
>
> Here is what I am trying to do, I want to find the last NON-ZERO digit of a
> given factorial. For instance,
>
> 5! = 120
>
> so the last non-zero digit is 2. I want to be able to do this up to 1000.
> Problem is, no matter how huge of a data-type you use, there isn't any way for
> the computer to handle 1000!, it is however possible to find the last non-zero
> digit somehow. One thing I have tried is as I went through mulitplying the
> series of numbers in the factorial (5 * 4 * 3 * 2) I would remove all the
> trailing ZEROS, I got this to work up to 789, but it wont work with 1000 and i
> am not really sure why. If anyone has a clue how I can do this let me know.
Don't just strip the trailing zeros, remove all digits except the last non-zero
digit (which is your output) and then multiply by the next number in your sequence.
This keeps the numbers down to a managable level and gives the correct answer as
no more significant digit can affect the value of the LSD.
If we have a function int LSD(int val) which computes the value of the least
significant non-zero digit the pseudo C code should be something like :
int factLSD = 1;
int i;
for (i = 1; i <= 1000; i++)
{
factLSD = LSD(i * factLSD);
print i, factLSD;
}
John
john.cleland@born.com
Technical Details
Message-ID:
<31224679.6193@born.com>Path:
arc1-ca.pugleaf.net!news.mr.net!usenetReferences:
<4fr8be$ass@news.iconn.net>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news.mr.net!usenet From: John Cleland <clelaj@born.com> Newsgroups: comp.lang.pascal.misc,comp.lang.c++,comp.lang.c,comp.lang.pascal.borland Subject: Re: Tough FACTORIAL math problem... Date: Wed, 14 Feb 1996 14:30:49 -0600 Organization: Born Message-ID: <31224679.6193@born.com> References: <4fr8be$ass@news.iconn.net> NNTP-Posting-Host: 204.73.78.51 Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 2.0 (Win95; I)