# Write a Matlab script that asks for an integer (n) and then computes the following based on the value of the integer:

718 views (last 30 days)

Show older comments

While the value of n is greater than 1, replace the integer with half of its value (n/2) if the integer is even. Otherwise, replace the integer with three times its value, plus 1 (3*n + 1).

Print the sequence that results.

Example: if n=10 then the sequence will be 10, 5, 16, 8, 4, 2, 1

##### 2 Comments

Purushottama Rao
on 7 May 2015

### Answers (2)

Ingrid
on 7 May 2015

Edited: Ingrid
on 7 May 2015

prompt = 'Give an integer value? ';

n = input(prompt);

% check if integer number is provided

if ~(abs(round(n)-n) < eps)

errordlg(' The number provided is not an integer');

else

while n > 1

if floor(n/2) == n/2

%number is even

n = n/2;

else

%number is odd

n = 3*n+1;

end

disp(n)

end

end

this took about 1 minute so should not have been too difficult to solve yourself

##### 1 Comment

Guillaume
on 7 May 2015

Purushottama Rao
on 7 May 2015

k=input('enter the data')

a=1:k;

disp('before manipulations')

disp(a)

for n=1:length(a)

if (a(n)>1&&mod(a(n),2)==0)

a(n)=0.5*a(n);

elseif (a(n)>1 && mod(a(n),2)==1)

a(n)=3*a(n)+1;

end

end

enter the data 10

k =

10

before manipulations 1 2 3 4 5 6 7 8 9 10

after manipulations 1 1 10 2 16 3 22 4 28 5 disp('after manipulations') disp(a)

##### 5 Comments

Guillaume
on 7 May 2015

I thought that was pretty clear. The first element of the sequence is the input number, the next element is either:

- half the previous element, if it is even
- 1 plus 3 times the previous element, if it is odd and greater than one
- the end of the sequence, if it is 1.

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!