Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
53
Task/Prime-decomposition/FreeBASIC/prime-decomposition.basic
Normal file
53
Task/Prime-decomposition/FreeBASIC/prime-decomposition.basic
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
' FB 1.05.0 Win64
|
||||
|
||||
Function isPrime(n As Integer) As Boolean
|
||||
If n Mod 2 = 0 Then Return n = 2
|
||||
If n Mod 3 = 0 Then Return n = 3
|
||||
Dim d As Integer = 5
|
||||
While d * d <= n
|
||||
If n Mod d = 0 Then Return False
|
||||
d += 2
|
||||
If n Mod d = 0 Then Return False
|
||||
d += 4
|
||||
Wend
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Sub getPrimeFactors(factors() As UInteger, n As UInteger)
|
||||
If n < 2 Then Return
|
||||
If isPrime(n) Then
|
||||
Redim factors(0 To 0)
|
||||
factors(0) = n
|
||||
Return
|
||||
End If
|
||||
Dim factor As UInteger = 2
|
||||
Do
|
||||
If n Mod factor = 0 Then
|
||||
Redim Preserve factors(0 To UBound(factors) + 1)
|
||||
factors(UBound(factors)) = factor
|
||||
n \= factor
|
||||
If n = 1 Then Return
|
||||
If isPrime(n) Then factor = n
|
||||
Else
|
||||
factor += 1
|
||||
End If
|
||||
Loop
|
||||
End Sub
|
||||
|
||||
Dim factors() As UInteger
|
||||
Dim primes(1 To 17) As UInteger = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59}
|
||||
Dim n As UInteger
|
||||
For i As UInteger = 1 To 17
|
||||
Erase factors
|
||||
n = 1 Shl primes(i) - 1
|
||||
getPrimeFactors factors(), n
|
||||
Print "2^";Str(primes(i)); Tab(5); " - 1 = "; Str(n); Tab(30);" => ";
|
||||
For j As UInteger = LBound(factors) To UBound(factors)
|
||||
Print factors(j);
|
||||
If j < UBound(factors) Then Print " x ";
|
||||
Next j
|
||||
Print
|
||||
Next i
|
||||
Print
|
||||
Print "Press any key to quit"
|
||||
Sleep
|
||||
Loading…
Add table
Add a link
Reference in a new issue