Penta-power prime seeds: Difference between revisions
Content added Content deleted
(Realize in F#) |
(added FreeBASIC) |
||
Line 276: | Line 276: | ||
1,121,189 1,158,975 1,483,691 1,490,475 1,512,321 |
1,121,189 1,158,975 1,483,691 1,490,475 1,512,321 |
||
</pre> |
</pre> |
||
=={{header|FreeBASIC}}== |
|||
{{libheader|GMP}} |
|||
<syntaxhighlight lang="freebasic">' version 13-04-2023 |
|||
' compile with: fbc -s console |
|||
#Include "gmp.bi" |
|||
#Define sieve_max 20050000 |
|||
Dim As Mpz_ptr n2 = Allocate (Len(__mpz_struct)) |
|||
Dim As Mpz_ptr n3 = Allocate (Len(__mpz_struct)) |
|||
Dim As Mpz_ptr n4 = Allocate (Len(__mpz_struct)) |
|||
Mpz_init(n2) : Mpz_init(n3) : Mpz_init(n4) |
|||
Dim As ULongInt i, j |
|||
ReDim As boolean sieve(sieve_max) |
|||
' default value on initialization is FALSE |
|||
sieve(2) = TRUE |
|||
' set all odd numbers to TRUE |
|||
For i = 3 To sieve_max Step 2 |
|||
sieve(i) = TRUE |
|||
Next |
|||
For i = 3 To Sqr(sieve_max) Step 2 |
|||
If sieve(i) = TRUE Then |
|||
For j = i * i To sieve_max Step i * 2 |
|||
sieve(j) = FALSE |
|||
Next |
|||
End If |
|||
Next |
|||
Dim As ULongInt n, count, k |
|||
Dim As LongInt si = 15 |
|||
Print "The first fifty quad-power prime seeds are:" |
|||
While count < 50 |
|||
n += 1 |
|||
k = n +1 |
|||
If sieve(n + k) Then ' skip if n + k is not prime |
|||
Mpz_ui_pow_ui(n4, n , 4) |
|||
Mpz_add_ui(n4, n4, k) |
|||
If Mpz_probab_prime_p(n4, si) < 1 Then Continue While ' skip if not prime |
|||
Mpz_ui_pow_ui(n3, n, 3) |
|||
Mpz_add_ui(n3, n3, k) |
|||
If Mpz_probab_prime_p(n3, si) < 1 Then Continue While ' skip if not prime |
|||
Mpz_ui_pow_ui(n2, n, 2) |
|||
Mpz_add_ui(n2, n2, k) |
|||
If Mpz_probab_prime_p(n2, si) >= 1 Then ' if prime then print n |
|||
Print Using "########"; n; |
|||
count += 1 |
|||
If (count Mod 10) = 0 Then Print |
|||
End If |
|||
End If |
|||
Wend |
|||
Dim As ULongInt m = 1, million = 1000000 |
|||
Print !"\n\nFirst quad-power prime seed greater than:" |
|||
While m < 11 |
|||
n += 1 |
|||
k = n +1 |
|||
If sieve(n + k) Then ' skip if n + k is not prime |
|||
Mpz_ui_pow_ui(n4, n , 4) |
|||
Mpz_add_ui(n4, n4, k) |
|||
If Mpz_probab_prime_p(n4, si) < 1 Then Continue While ' skip if not prime |
|||
Mpz_ui_pow_ui(n3, n, 3) |
|||
Mpz_add_ui(n3, n3, k) |
|||
If Mpz_probab_prime_p(n3, si) < 1 Then Continue While ' skip if not prime |
|||
Mpz_ui_pow_ui(n2, n, 2) |
|||
Mpz_add_ui(n2, n2, k) |
|||
If Mpz_probab_prime_p(n2, si) >= 1 Then |
|||
count += 1 |
|||
If n > million Then |
|||
Print Using " ## million is #########, at index ### "; m; n; count |
|||
m += 1 |
|||
million = m * 1000000 |
|||
End If |
|||
End If |
|||
End If |
|||
Wend |
|||
Mpz_clear(n4) : Mpz_clear(n3) : Mpz_clear(n2) |
|||
' empty keyboard buffer |
|||
While InKey <> "" : Wend |
|||
Print : Print "hit any key to end program" |
|||
Sleep |
|||
End</syntaxhighlight> |
|||
{{out}} |
|||
<pre>The first fifty quad-power prime seeds are: |
|||
1 2 5 6 69 131 426 1665 2129 2696 |
|||
5250 7929 9689 13545 14154 14286 16434 19760 25739 27809 |
|||
29631 36821 41819 46619 48321 59030 60500 61955 62321 73610 |
|||
77685 79646 80535 82655 85251 86996 91014 96566 97739 105939 |
|||
108240 108681 119754 122436 123164 126489 140636 150480 153179 163070 |
|||
First quad-power prime seed greater than: |
|||
1 million is 1,009,286 at index 141 |
|||
2 million is 2,015,496 at index 234 |
|||
3 million is 3,005,316 at index 319 |
|||
4 million is 4,004,726 at index 383 |
|||
5 million is 5,023,880 at index 452 |
|||
6 million is 6,000,554 at index 514 |
|||
7 million is 7,047,129 at index 567 |
|||
8 million is 8,005,710 at index 601 |
|||
9 million is 9,055,151 at index 645 |
|||
10 million is 10,023,600 at index 701</pre> |
|||
=={{header|Go}}== |
=={{header|Go}}== |