How to check if the sum of two halves of a number is equal in VB.NET

2 Answers

0 votes
imports System

Module Module1

    Function SumDigits(n As Long) As Integer
        Dim sum As Integer = 0

        While n <> 0
            sum += CInt(n Mod 10)
            n \= 10
        End While

        Return sum
    End Function

    Function CheckHalvesSumEqual(n As Long) As Boolean
        Dim s As String = Math.Abs(n).ToString()
        Dim length As Integer = s.Length

        If length Mod 2 <> 0 Then
            Console.Write("The number of digits is NOT even. It cannot be split into two halves: ")
            Return False
        End If

        Dim halfLength As Integer = length \ 2

        Dim firstHalf As String = s.Substring(0, halfLength)
        Dim secondHalf As String = s.Substring(length - halfLength)

        Dim num1 As Long = Long.Parse(firstHalf)
        Dim num2 As Long = Long.Parse(secondHalf)

        Return SumDigits(num1) = SumDigits(num2)
    End Function

    Sub Main()
        Dim num1 As Long = 123456
        Dim num2 As Long = 123321
        Dim num3 As Long = 123123
        Dim num4 As Long = 123411
        Dim num5 As Long = 1234321
        Dim num6 As Long = 12321

        Console.WriteLine($"{num1}: {CheckHalvesSumEqual(num1).ToString().ToLower()}")
        Console.WriteLine($"{num2}: {CheckHalvesSumEqual(num2).ToString().ToLower()}")
        Console.WriteLine($"{num3}: {CheckHalvesSumEqual(num3).ToString().ToLower()}")
        Console.WriteLine($"{num4}: {CheckHalvesSumEqual(num4).ToString().ToLower()}")
        Console.WriteLine($"{num5}: {CheckHalvesSumEqual(num5).ToString().ToLower()}")
        Console.WriteLine($"{num6}: {CheckHalvesSumEqual(num6).ToString().ToLower()}")
    End Sub

End Module



' run:
'
' 123456: false
' 123321: true
' 123123: true
' 123411: true
' The number of digits is NOT even. It cannot be split into two halves: 1234321: false
' The number of digits is NOT even. It cannot be split into two halves: 12321: false
'

 



answered Dec 22, 2025 by avibootz
0 votes
imports System
imports System.Linq

Module Module1

    Function HalvesSumEqual(n As Long) As Boolean
		Dim s As String = Math.Abs(n).ToString()

		If s.Length Mod 2 <> 0 Then
			Return False
		End If

		Dim half As Integer = s.Length \ 2

		Dim left As String = s.Substring(0, half)
		Dim right As String = s.Substring(half)

		Dim leftSum As Integer = left.Sum(Function(c) CInt(Char.GetNumericValue(c)))
		Dim rightSum As Integer = right.Sum(Function(c) CInt(Char.GetNumericValue(c)))

		Return leftSum = rightSum
	End Function

    Sub Main()
        Dim nums = {123456, 123321, 123123, 123411, 1234321, 12321}

		For Each n In nums
			Console.WriteLine($"{n}: {HalvesSumEqual(n).ToString().ToLower()}")
		Next

    End Sub

End Module

	

' run:
'
' 123456: false
' 123321: true
' 123123: true
' 123411: true
' 1234321: false
' 12321: false
'

 



answered Dec 23, 2025 by avibootz
...