|
1 |
| -clear all |
2 |
| -clc |
3 |
| - |
4 |
| -%% Prime Factors |
5 |
| -% This code gets user input number, calculates and displays its prime factors. |
6 |
| -% For this, first it determines prime numbers which are less than or equal to |
7 |
| -% user input number. Then if the input is dividable by that prime number, |
8 |
| -% it becomes one of input's prime factors. |
9 |
| - |
10 |
| -%% Request user input |
11 |
| -prompt = 'Input your number: '; |
12 |
| -n = input(prompt); |
13 |
| - |
14 |
| -%% |
15 |
| -counter = 0; % initialize number of prime factors |
16 |
| - |
17 |
| -if n <= 1 |
18 |
| - disp('input must be positive integer greater than 1') |
19 |
| -else if floor(n)~= n |
20 |
| - disp('input must be positive integer') |
21 |
| - else |
22 |
| - for i = 2:1:n |
23 |
| - if i == 2 |
24 |
| - isprime = 1; |
25 |
| - else |
26 |
| - half_i = floor(i/2)+1; |
27 |
| - j = 2; |
28 |
| - while j <= half_i %lines 16 to 30 check if i is prime or not. |
29 |
| - residual = mod(i,j); |
30 |
| - if residual == 0 |
31 |
| - isprime = 0; |
32 |
| - break |
33 |
| - else if j == half_i |
34 |
| - isprime = 1; |
35 |
| - break |
36 |
| - else |
37 |
| - j=j+1; |
38 |
| - end |
39 |
| - end |
40 |
| - end |
41 |
| - end |
42 |
| - if isprime == 1 && mod(n,i) == 0 |
43 |
| - counter=counter+1; |
44 |
| - f(counter) = i; % prime factors of n will be storing |
45 |
| - end |
46 |
| - end |
| 1 | +%% Prime Factorization |
| 2 | + |
| 3 | +function prime_factorization() |
| 4 | + |
| 5 | +% This function gets user input number, calculates and displays its prime factors. |
| 6 | +% |
| 7 | +% 1) Input: The code asks the user to enter a number to decompose into prime factors. |
| 8 | +% |
| 9 | +% 2) Input Validation: It checks if the number is a positive integer greater than 1. |
| 10 | +% If not, it throws an error. |
| 11 | +% |
| 12 | +% 3) Prime Factorization: |
| 13 | +% Firstly, it divides the number by 2 repeatedly (if it's divisible by 2). |
| 14 | +% Then, it checks for odd divisors (starting from 3) up to the square root |
| 15 | +% of the remaining number, dividing when it finds a factor. |
| 16 | +% |
| 17 | +% 4) Output: The prime factors are stored in an array and displayed in the |
| 18 | +% format n = p1 * p2 * ... |
| 19 | + |
| 20 | +% Ask the user to enter a number |
| 21 | +number = input('Enter a number to decompose into prime factors: '); |
| 22 | + |
| 23 | +% Check if the number is a positive integer greater than 1 |
| 24 | +if mod(number, 1) ~= 0 || number <= 1 |
| 25 | + error('The number must be a positive integer greater than 1.'); |
| 26 | +end |
| 27 | + |
| 28 | +% Initialize an empty array to store the prime factors |
| 29 | +primeFactors = []; |
| 30 | + |
| 31 | +% Check for factor 2 (the smallest prime) |
| 32 | +while mod(number, 2) == 0 |
| 33 | + primeFactors = [primeFactors, 2]; |
| 34 | + number = number / 2; |
| 35 | +end |
| 36 | + |
| 37 | +% Check for odd factors starting from 3 |
| 38 | +divisor = 3; |
| 39 | +while divisor * divisor <= number |
| 40 | + while mod(number, divisor) == 0 |
| 41 | + primeFactors = [primeFactors, divisor]; |
| 42 | + number = number / divisor; |
47 | 43 | end
|
| 44 | + divisor = divisor + 2; % Skip even numbers as they are not primes |
| 45 | +end |
| 46 | + |
| 47 | +% If the remaining number is greater than 2, it must be prime |
| 48 | +if number > 2 |
| 49 | + primeFactors = [primeFactors, number]; |
| 50 | +end |
| 51 | + |
| 52 | +% Display the prime factorization |
| 53 | +disp('The prime factorization is:'); |
| 54 | +fprintf('%d = ', prod(primeFactors)); % Print the original number |
| 55 | +disp(strjoin(arrayfun(@num2str, primeFactors, 'UniformOutput', false), ' * ')); |
| 56 | + |
48 | 57 | end
|
49 | 58 |
|
50 |
| -disp('Prime factors of input number are: ') |
51 |
| -disp(f) |
|
0 commit comments