Penta-power prime seeds: Difference between revisions

added FreeBASIC
(Realize in F#)
(added FreeBASIC)
Line 276:
1,121,189 1,158,975 1,483,691 1,490,475 1,512,321
</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}}==
457

edits