- Related Questions & Answers
- Python Program for Efficient program to print all prime factors of a given number
- Find all prime factors of a number - JavaScript
- Python Program for Product of unique prime factors of a number
- Program to find all prime factors of a given number in sorted order in Python
- Print all prime factors and their powers in C++
- Print all numbers whose set of prime factors is a subset of the set of the prime factors of X in C++
- Prime factors of a big number in C++
- C/C++ Program to find Product of unique prime factors of a number?
- Print all combinations of factors in C++
- Product of unique prime factors of a number in Python Program
- Maximum number of unique prime factors in C++
- C/C++ Program to find the Product of unique prime factors of a number?
- Java Program to find Product of unique prime factors of a number
- C Program for Find sum of odd factors of a number?
- C++ program for Find sum of odd factors of a number

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

In this section, we will see how we can get all the prime factors of a number in an efficient way. There is a number say n = 1092, we have to get all prime factors of this. The prime factors of 1092 are 2, 2, 3, 7, 13. To solve this problem, we have to follow this rule −

When the number is divisible by 2, then print 2, and divide the number by 2 repeatedly.

Now the number must be odd. Now starting from 3 to square root of the number, if the number is divisible by current value, then print, and change the number by divide it with the current number then continue.

Let us see the algorithm to get a better idea.

begin while n is divisible by 2, do print 2 n := n / 2 done for i := 3 to √𝑛, increase i by 2, do while n is divisible by i, do print i n := n / i done done if n > 2, then print n end if end

#include<stdio.h> #include<math.h> void primeFactors(int n) { int i; while(n % 2 == 0) { printf("%d, ", 2); n = n/2; //reduce n by dividing this by 2 } for(i = 3; i <= sqrt(n); i=i+2){ //i will increase by 2, to get only odd numbers while(n % i == 0) { printf("%d, ", i); n = n/i; } } if(n > 2) { printf("%d, ", n); } } main() { int n; printf("Enter a number: "); scanf("%d", &n); primeFactors(n); }

Enter a number: 24024 2, 2, 2, 3, 7, 11, 13,

Advertisements