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

Making a quiz web app with python and flask

Edit : When you are creating a web app with h tml templates, then y ou will have to sa ve the html file in templates folder in the Current Wor ki ng Directory( CWD). If you save the file in the C W D directl y you will get a TemplateNotFound error. Thank you Udhay for pointing it out.   In this post we will create a quiz website using python . I will be using the flask framework . After reading this tutorial you will learn form submission , flask templates , python code in flask templates , shuffling the questions and options with the random module and few others.  Please note that this tutorial is not big as it seems to be. Some of the code has been rewritten to maintain consistency and also font size is somewhat big so that your eyes won't get stressed reading this tutorial. Also the content has not occupied the full width of the page. In this tutorial I am assuming that you are having a very basic understanding of the flask framework . Please refer the documentation

Problem 11 Project Euler Solution with python

Largest product in a grid In the 20×20 grid below, four numbers along a diagonal line have been marked in red. 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70 67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21 24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72 21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 04 52 08 83 97 35 99 16 07

Problem 60 Project Euler Solution with python

Prime pair sets The primes 3, 7, 109, and 673, are quite remarkable. By taking any two primes and concatenating them in any order the result will always be prime. For example, taking 7 and 109, both 7109 and 1097 are prime. The sum of these four primes, 792, represents the lowest sum for a set of four primes with this property. Find the lowest sum for a set of five primes for which any two primes concatenate to produce another prime. This problem is j u st a brute force problem. If you have come here because you don't know the limit upto which you will h ave to gener ate the prime numbers t hen go ahe ad and t r y with 10,000 . When I first start ed solving the problem I chose 1 million(beca use most of the problem s on project E uler have this limit ), but it took very long for the computer to fin d the solution. After searching on the internet then I found many people choosing 10, 000 so I have changed my in put f rom 1 million to 10000 and the output was f ast. He