Data update

This commit is contained in:
Ingy döt Net 2024-10-16 18:07:41 -07:00
parent 81fd053722
commit 52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions

View file

@ -1,24 +1,45 @@
Function isPrime(n As Uinteger) As Boolean
Dim As Uinteger i
For i = 2 To Sqr(n)
If n Mod i = 0 Then Return False
Next i
Return True
Sub primeSieve(limit As Uinteger, primes() As Uinteger)
Dim As Uinteger i, j
Dim As Uinteger sieve(limit)
For i = 2 To limit
sieve(i) = 1
Next
For i = 2 To limit
If sieve(i) Then
Redim Preserve primes(Ubound(primes) + 1)
primes(Ubound(primes)) = i
For j = i * i To limit Step i
sieve(j) = 0
Next
End If
Next
End Sub
Function phi(x As Uinteger, a As Uinteger, primes() As Uinteger) As Uinteger
If a <= 1 Then Return Iif(a < 1, x, x - (x \ 2))
Dim As Uinteger pa = primes(a - 1)
If x <= pa Then Return 1
Return phi(x, a - 1, primes()) - phi(x \ pa, a - 1, primes())
End Function
Dim As Uinteger n, i, j, count
Dim Shared As Ulongint primes(1e8)
n = 1
Function pi(n As Uinteger) As Uinteger
If n < 3 Then Return Iif(n < 2, 0, 1)
Dim As Uinteger primes()
primeSieve(Int(Sqr(n)), primes())
Dim As Uinteger a = Ubound(primes) + 1
Return phi(n, a, primes()) + a - 1
End Function
Dim As Uinteger i, n = 1
For i = 0 To 9
count = 0
For j = 2 To n
If isPrime(j) Then
count += 1
primes(count) = j
End If
Next j
Print "10^"; i; " "; count
Print "10^" & i & " " & pi(n)
n *= 10
Next i
Next
Sleep