how to separate number

I want to know how to separate 2024 into 2 and 0 and 2 and 4. I already know how to do num2str-'0'. However, it cannot be used because there is a gap. Please help me.

4 Comments

Voss
Voss on 31 Mar 2024
Where is a gap?
function v = MySecret( y )
v=unique(num2str(factor(y))-'0')
If y=2024, the value is output as -16 1 2 3. But what I want is 1 2 3.
This is a question.
Write a function v = MySecret(y) that returns a vector v that arranges each number that comes out in ascending order when a number y is prime factorized.
Use Examples
>> v = MySecret(2024)
v =
1 2 3
If we sub-factorize 2024 given as an argument, it is 2x2x2x11x23, so the numbers used are 1, 2, and 3.
Voss
Voss on 31 Mar 2024
Sounds like they are asking for numbers (2, 11, 23) not digits (1, 2, 3).

Sign in to comment.

 Accepted Answer

Voss
Voss on 31 Mar 2024
function v = MySecret( y )
str = num2str(factor(y));
str(str == ' ') = []; % remove spaces
v = unique(str-'0');

3 Comments

Is there anything smaller in size?
I want an extremely small code.
Voss
Voss on 31 Mar 2024
Edited: Voss on 31 Mar 2024
Fewer lines:
function v = MySecret( y )
str = num2str(factor(y));
v = unique(str(str ~= ' ')-'0');
Fewer lines still:
function v = MySecret( y )
v = unique(strrep(num2str(factor(y)),' ','')-'0');
If they want the prime factors, rather than their digits, then of course it's just:
function v = MySecret( y )
v = unique(factor(y));

Sign in to comment.

More Answers (0)

Asked:

on 31 Mar 2024

Edited:

on 31 Mar 2024

Community Treasure Hunt

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

Start Hunting!