Calculation

• 08-01-2001, 05:04 AM
anonymous
Calculation
[Originally posted by Vicky]

Hi... Can anyone help me....

The program that I'm writing now is simulating the Collatz Problem and determine the number of steps taken to reach 1 for any given intger.The process is that if the number is even, divide that number by 2; If the number is odd, multiply that number by 3 and then add 1. the calculation goes on and on until the number is 1

I got this problem:
If the input number is odd then multiply the number by 3 then add 1 to it.

I call the number intNu..
I've type intNu= (intNu*3)+1)
but when i run the program, a message pop up and says i got this overflow problem....
What should i do to make it work....
Thankyou
• 08-01-2001, 05:13 AM
anonymous
Re:Calculation
[Originally posted by Eli Martin]

Is intNu really overranging?ÿ I'm sure you know, but the value range for and int is -32767 thru 32768.ÿ If it is truely in range, e-mail me the code and I will take a deeper look at it.
• 08-01-2001, 05:15 AM
anonymous
Re:Calculation
[Originally posted by JPicasso]

integer variables can only hold values upto
32,000 someting.

try declaring variables as Longs.

• 08-01-2001, 10:31 AM
anonymous
Re:Calculation
[Originally posted by Jonathan Barnes]

On a purely mathematical note, there is one part of the formula I do not quite follow:ÿ if the goal is to get to 1 by iteration, I would think it would be something like:

dim lngnum as long

do while lngnum <> 1

if lngnum MOD 2 = 0 then
ÿ lngnum = lngnum / 2
else
ÿ lngnum = lngnum - 1
ÿ 'instead of lngnum * 3 + 1
endif

loop