Challenge for you...
#51
(04-23-2023, 04:02 PM)david_uwi Wrote: A program for big factorials (not using strings). It was written to work with QB4.5

This program is very clever! The only way to be able to do very large integers without strings is with integer array. I had thought it needed many more calculations, more convoluted code to "piece" the snake together.
Reply
#52
Quote:@David - A program for big factorials (not using strings). It was written to work with QB4.5

Functions!  Exclamation  If Pete could see that. . .  Big Grin
Reply
#53
Thumbs Up 
(04-23-2023, 04:02 PM)david_uwi Wrote: A program for big factorials (not using strings). It was written to work with QB4.5
Code: (Select All)
DefInt A-S
mx = 32000
Dim f(mx) As Integer
Input "input number"; n
f(mx) = 1
m = mx
For i = 2 To n
    For j = mx To m Step -1
        f(j) = f(j) * i + ic
        ic = f(j) \ 10
        f(j) = f(j) Mod 10
    Next j
    While ic <> 0
        m = m - 1
        f(m) = f(m) + ic
        ic = f(m) \ 10
        f(m) = f(m) Mod 10
    Wend
Next i
For j = m To mx
    Print Using "#"; f(j);
Next j
Print " ="; n; "!"

Very interesting, I wonder if can take place of String Math or do more tricks with this.
b = b + ...
Reply
#54
bplus
from the looks of it the code does one digit at a time judging from the \ 10 and mod 10, it would be many times faster if you did more digits at a time
Reply
#55
Yes loading the array with bigger numbers would make it quicker, but surprisingly not by much. Notice the WHILE...WEND loop I thought that was a nice touch and it's good we still have compatibility with GWBASIC.
Anyway that's how big numbers are handled load as much as you can and use carries on overflow.
Reply
#56
(04-23-2023, 05:36 PM)Jack Wrote: bplus
from the looks of it the code does one digit at a time judging from the \ 10 and mod 10, it would be many times faster if you did more digits at a time

And I do many digits at a time except maybe division in String Math but... all that String processing pays a price.
Update: Wait I do division by multiplying with reciprocals, that's right.

I was wondering if maybe do _Integer64 for maximizing number of integers maybe 12+ digits at a time?
6 of 1, half dozen of another...?
b = b + ...
Reply
#57
bplus, I think that 8 or 9 digits at a time would work, 9*9 digits = 18 digits
Reply
#58
My prime program
has been created that searches for prime numbers
according to formula of origin topic
but I feel an error in line

s = s + (Cos(3.1416 * (f + 1) / j)) ^ 2 ' FORMULA

Code: (Select All)
n = 3: Print n: p = 0 ' nijprime.bas Willans 1964
Dim f As Long
For i = 1 To 2 ^ n

    s = 0: Print: Print i;
    For j = 1 To i

        f = 1
        For g = 1 To j - 1
            f = f * g
        Next g: Print "  ="; f;

        s = s + (Cos(3.1416 * (f + 1) / j)) ^ 2 ' FORMULA
    Next j

    p = p + (n / s) ^ (1 / n)
Next i

p = 1 + p: Print: Print p


I create a version of my prime program about primes
in JavaScript where all numbers are long
by copying save HTM or checked online

https://jdoodle.com/h/2XK

Moreover results of BAS & JS are same

I think there is a mistake in formula

Code: (Select All)
<!DOCTYPE html> <html lang="en"> <head>
<title>nijprime js JavaScript DANILIN</title>
<html> <body>

https://jdoodle.com/h/2XK 

<script>

document.write("<br/> nijprime.bas Willans 1964")

n = 4; document.write("<br/>" + n); p = 0

for (i=1; i <= Math.pow(2,n); i++)

  { s = 0; document.write("<br/>" + i)

    for (j=1; j<=i; j++)

      { f = 1; for (g=1; g <= j-1; g++) f = f * g        
        document.write("  ="+ f)
        s = s + Math.pow((Math.cos(Math.PI * (f + 1) / j)),2)
      }

    p = p + Math.pow((n / s), (1 / n))
   }

p = 1 + p; document.write("<br/>" + p)

</script>

</body> </html>

4
16 =1 =1 =2 =6 =24 =120 =720 =5040 =40320 =362880 =3628800 =39916800 =479001600 =6227020800 =87178291200 =1307674368000
15.582928489000466


https://jdoodle.com/h/2XK

1001 prime is 104743

06-06-2022, 08:15 PM
https://staging.qb64phoenix.com/showthread...45#pid2945
long read
https://rosettacode.org/wiki/10001th_prime
Write name of program in 1st line to copy & paste & save filename.bas
Insert program pictures: press print-screen-shot button
Open paint & Paste & Save as PNG
Add picture file to program topic

Russia looks world from future. Big data is peace data.
I never recommend anything & always write only about myself
Reply
#59
Hi DANILIN
QB64 default type is single, this lame formula needs a lot of precision and a Quantum computer with an astronomical amount of RAM
with double you can go as high as 6
see my implementation on page 1, I don't think that your implementation will work even with double
Reply




Users browsing this thread: 6 Guest(s)