How to resolve the algorithm Numbers which are not the sum of distinct squares step by step in the BASIC programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Numbers which are not the sum of distinct squares step by step in the BASIC programming language

Table of Contents

Problem Statement

Integer squares are the set of integers multiplied by themselves: 1 x 1 = 1, 2 × 2 = 4, 3 × 3 = 9, etc. ( 1, 4, 9, 16 ... ) Most positive integers can be generated as the sum of 1 or more distinct integer squares. Many can be generated in multiple ways: The number of positive integers that cannot be generated by any combination of distinct squares is in fact finite:

Find and show here, on this page, every positive integer than cannot be generated as the sum of distinct squares. Do not use magic numbers or pre-determined limits. Justify your answer mathematically.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Numbers which are not the sum of distinct squares step by step in the BASIC programming language

Source code in the basic programming language

Function SumSq(num As Integer) As Integer    'Return sum of squares specified by bits in num
    Dim As Integer n = 1, suma = 0, Sq
    While num
        If num And 1 Then
            Sq = n*n
            suma += Sq
        End If
        num Shr= 1
        n += 1
    Wend
    Return suma
End Function

Dim As Integer limite = 1e6, cant = 0, i
Dim As Boolean flags(limite)

For i = 0 To limite-1
    flags(i) = True
Next
For i = 0 To limite-1
    If i < limite Then flags(SumSq(i)) = False
Next

For i = 0 To Sqr(limite)-1
    If flags(i) Then cant += 1: Print i; 
Next
Print Chr(10); cant; " numbers which are not the sum of distinct squares."

Sleep

Public flags[1000000] As Boolean

Public Sub Main() 
  
  Dim limite As Integer = 1e6, cant As Integer = 0, i As Integer 
  
  For i = 0 To limite - 1 
    flags[i] = True 
  Next 
  For i = 0 To limite - 1 
    If i < limite Then flags[SumSq(i)] = False 
  Next 
  
  For i = 0 To Sqr(limite) - 1 
    If flags[i] Then 
      cant += 1
      Print i; " "; 
    End If
  Next 
  Print Chr(10); cant; " numbers which are not the sum of distinct squares." 
  
End

Function SumSq(num As Integer) As Integer
  
  Dim n As Integer = 1, suma As Integer = 0, Sq As Integer

  While num 
    If num And 1 Then 
      Sq = n * n 
      suma += Sq 
    End If 
    num = num Shr 1 
    n += 1
  Wend 
  Return suma 
  
End Function


  

You may also check:How to resolve the algorithm Sylvester's sequence step by step in the Phix programming language
You may also check:How to resolve the algorithm Function definition step by step in the Haskell programming language
You may also check:How to resolve the algorithm Tau number step by step in the Fermat programming language
You may also check:How to resolve the algorithm Search a list step by step in the Perl programming language
You may also check:How to resolve the algorithm Shell one-liner step by step in the Icon and Unicon programming language