Skip to main content

Generate factors for a given number using matlab with function

Problem

Write a function to generate factors for a given number using matlab. For example if the input is 28 then the output should be [1 2 4 7 14 28].

Solution

Before I will start with the solution, when I have googled for whether matlab has an inbuilt function in it to generate factors I have found that there is a function, but when I have tried it in my matlab it showed an error. This may be due to the difference in the version. However, whether it is inbuilt or not understanding the algorithm, or writing your own program rather than using the inbuilt function(if they are not available) is fun and will also improve your programming skills. Going back to the solution

In this program we have used the for loop, rem function and the if statement to accomplish the program successfully. If you don't know any of these then please read from below links:
1) For loop in matlab
2) Rem function in matlab(Remainder after division)
3) if statement in matlab

You can find the explanation for the program below the program section

Program

function result = factors(n)
%This function will generate the factors of the given number
%For example if input is 28 then the result will be
%[1 2  7 14 28]

%Create an empty vector to store the values of the factors at each
%iteration

result = [];

%Create a for loop to loop through all the numbers below the given number
%to find whether the iterator is a factor of the given number or not.
for i = 1:n
    if rem(n,i) == 0
        result = [result i];
    end
end

Download the above program in matlab file format from here: factors.m

Explanation

In this function I have created an empty vector to store the values of the factors at each iteration
Now digging deep you will find a for loop, I will explain this iteration by iteration so that you will understand the program easily. Just follow along and it will be simple. Let us consider that the input number is 28.

First iteration

During the first iteration, the value of i is 1 and digging deep we will encounter if statement whose condition is if the iterator divides the number evenly(i.e. without leaving any remainder), then, the lock is open for you and you can go perform the next operation, or else change your value and come again. But for now in the first iteration, rem(28,1) = 0, and thus the lock is open and the result function becomes result = [1], by this the first iteration is over and the second iteration starts.

Second iteration

During the second iteration, the value of i is changed from 1 to 2, and the if statement condition is again satisfied and the result becomes result = [1 2], second iteration is over and the third iteration starts

Third iteration

In the third iteration, i changes from 2 to 3, but the statement in the if condition gets failed and the lock is not open, the policy is if the lock doesn't open change your value and come again. Thus the third iteration comes to an end with the following values:
i = 3,
result = [1 2],
we can observe that all the values will be same except the value of i.
In this way the if statement will sort out all the factors of 28 and store them in the result function. Finally after 28 iterations i.e. after changing the values of i from 1 to 28, the results are published.
For this example the answer will be [1 2 4 7 14 28].

I have tried to explain this program, in a way that it will be easy to understand even for novice programmers. If you haven' understood this program please do let me know by contacting me, or comment below so that all will get benefited. Thanks in advance for sending the message.

If you want to download this post as pdf format so that you can read it offline then you do so by clicking here: factors.pdf

The above code was highlighted using hilite.me

Run the program and comment below the output you are getting for a given input.

Keywords: factors, matlab function

Popular posts from this blog

Project Euler Problem 67 Solution with Python

Maximum path sum II By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 23. 3 7 4 2 4 6 8 5 9 3 That is, 3 + 7 + 4 + 9 = 23. Find the maximum total from top to bottom in triangle.txt (right click and 'Save Link/Target As...'), a 15K text file containing a triangle with one-hundred rows.

Problem 43 Project Euler Solution with python

Sub-string divisibility The number, 1406357289, is a 0 to 9 pandigital number because it is made up of each of the digits 0 to 9 in some order, but it also has a rather interesting sub-string divisibility property. Let d 1 be the 1 st digit, d 2 be the 2 nd digit, and so on. In this way, we note the following: d 2 d 3 d 4 =406 is divisible by 2 d 3 d 4 d 5 =063 is divisible by 3 d 4 d 5 d 6 =635 is divisible by 5 d 5 d 6 d 7 =357 is divisible by 7 d 6 d 7 d 8 =572 is divisible by 11 d 7 d 8 d 9 =728 is divisible by 13 d 8 d 9 d 10 =289 is divisible by 17 Find the sum of all 0 to 9 pandigital numbers with this property. One might write a simple solution using direct if else statements for this problem. Using if else statements, the execution time may be a few seconds. But this is not a very good approach. I too had written a program with if else statement which will take each and every permutation of the 0-9 Pandigital and check for the conditions given in the qu...

Add/Embed SVG to Blogger website

In this post I will tell you my method(trick) of adding SVG images in a blogger website or blog. Before starting , the first thin g I am assu m ing is that you are aware of SVG if you are here. If not please see S calable V ec tor G raphics Recently when I tried to embed a SVG image for a post on pygal, I tried uploading the SVG file and blogger Image uploader came up with an error, because of which I had to find some other way.  SVG File upload Error in Blogger  I started sea rc hing Google " Embed SVG in Blogger " . I found blogorrhea , w h ich gave some i nformatio n on add ing SVG directly as a markup , which worked , but I faced another problem using this . Also th is guy has used lot of Javascript which was confusin g for me, being new to using SVG.   So I first t houg ht of learning on h ow to embed SVG in HTML and t his on e worked out. Actually we can embed SVG in HTML i n following ways: Using Object tag Using Iframe tag Using embed...