On 2021-08-15 15:54, Samuel Gougeon wrote:
Le 15/08/2021 à 11:28, Lester Anderson a écrit :
Hello Samuel,

The size of ns (number of steps) and seq (sequence of values) are variable depending on the integer input, and this seems to be one issue.

For this reason, seq must be a list, leading to

function  [ns, seq] = collatz(p)
     seq  =  p
     while  %T
         if  pmodulo(p, 2)
             p  =  p*3+1
         else
             p  =  p/2
         end
         seq  =  [seq  p]
         if  p==1
             ns  =  length(seq)
             break
         end
     end
endfunction

prime = primes(20); [ns, seq] = ([],list()); for  i  =  1:length(prime)
     [ns(i),  seq(i)]  =  collatz(prime(i));
end --> ns' ans = 2. 8. 6. 17. 15. 10. 13. 21. --> seq seq = (1) = [2,1] (2) = [3,10,5,16,8,4,2,1] (3) = [5,16,8,4,2,1] (4) = [7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1] (5) = [11,34,17,52,26,13,40,20,10,5,16,8,4,2,1] (6) = [13,40,20,10,5,16,8,4,2,1] (7) = [17,52,26,13,40,20,10,5,16,8,4,2,1] (8) = [19,58,29,88,44,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1]

Samuel

Of course, Samuel, I didn't realize that the length of seq was not monotonically increasing (which I had if I had looked at the displayed matrix ...)!

Stefan
_______________________________________________
users mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/users

Reply via email to