Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connectionsPath: ...!news-out.netnews.com!postmaster.netnews.com!us7.netnews.com!not-for-mail X-Trace: DXC=g7EB\AmPd3cPHaK9SYdC3bHWonT5<]0TmQ;nb^V>PUff5[gZBW6J?LlTD;10@6=i=nZ[0LWn0`0Eb>G9_h6]J@kjWjB\Oa:X5b?f8h X-Complaints-To: support@blocknews.net Date: Sun, 16 Jun 2024 14:30:11 -0400 MIME-Version: 1.0 User-Agent: Betterbird (Windows) From: DFS Subject: Re: C Non-Programming Non-Challenge Newsgroups: comp.os.linux.advocacy References: <17d933d9ffc8ee40$16989$3694546$802601b3@news.usenetexpress.com> <17d943beaefb3aa2$16097$2041738$802601b3@news.usenetexpress.com> Content-Language: en-US In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Lines: 148 Message-ID: <666f2f33$0$3102233$882e4bbb@reader.netnews.com> NNTP-Posting-Host: 127.0.0.1 X-Trace: 1718562611 reader.netnews.com 3102233 127.0.0.1:49193 Bytes: 5181 On 6/16/2024 4:19 AM, vallor wrote: >> On Jun 15, 2024 at 3:20:19 PM EDT, "Farley Flud" wrote: >> >>> On Sat, 15 Jun 2024 14:29:04 +0000, Farley Flud wrote: >>> >>> >>>> Write a C program to compute the subfactorial of an integer N. >>>> >>>> >>> Nobody got it (as predicted). >> >> Because no one bothered. > > I actually took the opportunity to install the GMP documentation > on my system, look up what a "subfactorial" is, and do > an implementation that works for !N where N is 0 through 50. Where's your code? Here's an approximation of !n, using round(n!/e) ----------------------------------------- #include #include int main(int argc, char *argv[]){ int n = atoi(argv[1]); for(int i=1;i<=n;i++){ double f=1.0; for(int n=1;n<=i;n++){ f*=n; } f/=2.71828; printf("%d. %.0f\n",i,(f)); } } ----------------------------------------- $ ./prog n Without using a bignum library, it craps out at 171 and prints 'inf' (so does python) 1. 0 2. 1 3. 2 4. 9 5. 44 6. 265 7. 1854 8. 14833 9. 133496 10. 1334962 11. 14684580 12. 176214959 13. 2290794473 14. 32071122622 15. 481066839325 16. 7697069429198 17. 130850180296364 18. 2355303245334550 19. 44750761661356448 20. 895015233227128960 21. 18795319897769705472 22. 413497037750933585920 23. 9510431868271472934912 24. 228250364838515316883456 25. 5706259120962883593175040 .... 50. 11188727136907667116392988817975029667335257249097046505283387392 .... 170. 2669855796793558290010001570575275101705027811519977073818130755407973315261224007251979700779512228624245141462623296456740188588977348681648565542706396927622340485993465997718765185927438606647566078414539613618036013433690401156103581768582773608415498699128984156662958003889715092930354450116728848384 171. inf > Furled Fart lost the opportunity to show his prowess with > the GMP library by not demonstrating use of gmp_printf(). Note he also lied "we ignore N = 1, 2 as they are trivial" He ignored them because he didn't know how to handle those cases. That's the kind of devious, evasive wanker he is. Notice he said "you missed a definite error in the code that I deliberately placed to catch any sharp eyes, but no catch." This is another devious lie he uses to try and excuse mistakes in his "perfect code". >> This is all trivial stuff. These math "problems" have already been >> solved multiple times. That you think this is a "programming challenge" >> just shows how utterly clueless you are. > > It's more of a "let's learn libgmp" challenge, which is a library > that he already has familiarity with. I don't think he learned anything. > And it's not that difficult a library to use. > >> Hint: people were doing this 60 years ago on mainframes using Fortran. >> That you have only now discovered this proves AGAIN how utterly clueless >> you are. >> >> >> What's next? Compute Pi to a million decimal places? That also has >> already been done many times. Sounds like another great "programming >> challenge" for your feeble brain. > > $ time ./try_mpz > 0:1 > 1:0 > 2:1 > 3:2 > 4:9 > 5:44 > [...] > 49:223774392215649610092605161415154686480227084177314431854406736 > 50:11188719610782480504630258070757734324011354208865721592720336801 > > real 0m0.002s > user 0m0.001s > sys 0m0.001s > > I also was interested in the recursive version. Here's the > run with N=50 with long long int's, which gives the wrong answer > due to overflow: > > $ time ./try2 > 7531320031745615777 > > real 0m35.541s > user 0m35.530s > sys 0m0.001s > > So: don't bother with the recursive version, except as > a pedantic exercize. > > *Do* use GMP if you ever need to work with big numbers... > maybe numpy in Python can do the same thing, I wouldn't > know about that. > > $ ll /usr/share/doc/gmp-doc/gmp.pdf.gz > -rw-r--r-- 1 root root 812615 Nov 16 2020 /usr/share/doc/gmp-doc/ > gmp.pdf.gz > > $ grep FLAGS Makefile > CFLAGS=-Wall -O3 -g -Wpedantic >