Author |
Message |
whoareyou
|
Posted: Thu Mar 03, 2011 3:45 pm Post subject: help - perfect numbers |
|
|
What is it you are trying to achieve?
I am trying to create a program that will calculate the first 3 perfect numbers
What is the problem you are having?
When I try to run the program, nothing shows up.
Describe what you have tried to solve this problem
moving variables and counters in and out of the loop.
Post any relevant code (You may choose to attach the file instead of posting the code if it is too long)
Turing: |
var sumOfFactors : int:= 0
var num : int:=0
loop
num +=1
for i : 1 .. num - 1
if (num mod i = 0) then
sumOfFactors += i
end if
end for
if (num = sumOfFactors) then
put num, " is perfect!"
end if
end loop
|
Please specify what version of Turing you are using
4.1.1 |
|
|
|
|
|
Sponsor Sponsor
|
|
|
Insectoid
|
Posted: Thu Mar 03, 2011 3:58 pm Post subject: RE:help - perfect numbers |
|
|
code: |
num +=1
for i : 1 .. num - 1
|
What's this doing? |
|
|
|
|
|
whoareyou
|
Posted: Thu Mar 03, 2011 4:00 pm Post subject: RE:help - perfect numbers |
|
|
num is initally set to zero,
so then that adds 1 to the num value
and for i: 1 .. num-1 is for the range of the divisors of the number. since a perfect number cant have a factor equal to itself, the range ends at num - 1. |
|
|
|
|
|
RandomLetters
|
Posted: Thu Mar 03, 2011 4:06 pm Post subject: RE:help - perfect numbers |
|
|
what about this?
sumOfFactors
also, it's an infinite loop. you should stop the program after it finds 3 numbers |
|
|
|
|
|
Insectoid
|
Posted: Thu Mar 03, 2011 4:19 pm Post subject: RE:help - perfect numbers |
|
|
That's not what it does at all.
i = 1. You're looping from 1 to i-1. What's i-1? |
|
|
|
|
|
whoareyou
|
Posted: Thu Mar 03, 2011 4:48 pm Post subject: RE:help - perfect numbers |
|
|
RandomLetters: sumOfFactors stores the sum of the numbers that go into the number perfectly, and then if the total of that variable equals the number, then its a perfect number.
Insectoid: umm i dont think i understnad you. it's i..num-1 not num-i |
|
|
|
|
|
Insectoid
|
Posted: Thu Mar 03, 2011 4:51 pm Post subject: RE:help - perfect numbers |
|
|
Sorry; It's still the same issue.
Num = 1. You're looping from 1 to num-1. Num-1 is zero. You're looping from 1 to zero. That is a problem. |
|
|
|
|
|
mirhagk
|
Posted: Thu Mar 03, 2011 4:55 pm Post subject: RE:help - perfect numbers |
|
|
initially it is 0, then it becomes 1, then 2. The problem isn't there insectoid.
The main problem is that you don't reset sumOfFactors.
So basically if it's checking 7, it not only checks it against the sum of 7's factors, but 7's factors + 6's factors + 4's factors etc.. |
|
|
|
|
|
Sponsor Sponsor
|
|
|
whoareyou
|
Posted: Thu Mar 03, 2011 4:56 pm Post subject: Re: help - perfect numbers |
|
|
i see i see.
ok i changed the initial value of num to 5, and now im getting an output screen. but now, it outputs :
"6 is perfect!
7 is perfect!"
? |
|
|
|
|
|
whoareyou
|
Posted: Thu Mar 03, 2011 4:59 pm Post subject: Re: RE:help - perfect numbers |
|
|
mirhagk @ Thu Mar 03, 2011 4:55 pm wrote:
The main problem is that you don't reset sumOfFactors.
So basically if it's checking 7, it not only checks it against the sum of 7's factors, but 7's factors + 6's factors + 4's factors etc..
so then, after it finds a perfect number, i should put
sumOfFactors := 0 ? |
|
|
|
|
|
whoareyou
|
Posted: Thu Mar 03, 2011 5:12 pm Post subject: Re: help - perfect numbers |
|
|
THE ALMOST FINISHED PRODUCT!
Turing: |
var sumOfFactors : int:= 0
var num : int:=0
loop
num +=1
for i : 1 .. num - 1
if (num mod i = 0) then
sumOfFactors += i
end if
end for
if (num = sumOfFactors) then
put num, " is perfect!"
sumOfFactors :=0
else
sumOfFactors :=0
end if
end loop
|
thanks to mirhagk --> the problem was with the sumOfFactors! thank you!
now i need to find a way to stop the loop after it finds 3 perfect numbers. maybe another variable ?[/u] |
|
|
|
|
|
RandomLetters
|
Posted: Thu Mar 03, 2011 5:39 pm Post subject: RE:help - perfect numbers |
|
|
Insectoid's logic is correct
num - 1 = 0 on the first iteration.
I guess turing's counted loop is equivalent to
while i < k
not
exit when i = k |
|
|
|
|
|
|