Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
44
Task/Happy-numbers/FreeBASIC/happy-numbers.basic
Normal file
44
Task/Happy-numbers/FreeBASIC/happy-numbers.basic
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
' FB 1.05.0 Win64
|
||||
|
||||
Function isHappy(n As Integer) As Boolean
|
||||
If n < 0 Then Return False
|
||||
' Declare a dynamic array to store previous sums.
|
||||
' If a previous sum is duplicated before a sum of 1 is reached
|
||||
' then the number can't be "happy" as the cycle will just repeat
|
||||
Dim prevSums() As Integer
|
||||
Dim As Integer digit, ub, sum = 0
|
||||
Do
|
||||
While n > 0
|
||||
digit = n Mod 10
|
||||
sum += digit * digit
|
||||
n \= 10
|
||||
Wend
|
||||
If sum = 1 Then Return True
|
||||
ub = UBound(prevSums)
|
||||
If ub > -1 Then
|
||||
For i As Integer = 0 To ub
|
||||
If sum = prevSums(i) Then Return False
|
||||
Next
|
||||
End If
|
||||
ub += 1
|
||||
Redim Preserve prevSums(0 To ub)
|
||||
prevSums(ub) = sum
|
||||
n = sum
|
||||
sum = 0
|
||||
Loop
|
||||
End Function
|
||||
|
||||
Dim As Integer n = 1, count = 0
|
||||
|
||||
Print "The first 8 happy numbers are : "
|
||||
Print
|
||||
While count < 8
|
||||
If isHappy(n) Then
|
||||
count += 1
|
||||
Print count;" =>"; n
|
||||
End If
|
||||
n += 1
|
||||
Wend
|
||||
Print
|
||||
Print "Press any key to quit"
|
||||
Sleep
|
||||
Loading…
Add table
Add a link
Reference in a new issue