# C Program for Find largest prime factor of a number?

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

• When the number is divisible by 2, then store 2 as largest, 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 store factor as largest, and change the number by divide it with the current number then continue.

• And finally if the number is greater than 2, then it is not 1, so get the max prime factor.

Let us see the algorithm to get a better idea.

## Algorithm

### getMaxPrimeFactors(n)

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

## Example

#include<stdio.h>
#include<math.h>
int getMaxPrimeFactor(int n) {
int i, max = -1;
while(n % 2 == 0) {
max = 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) {
max = i;
n = n/i;
}
}
if(n > 2) {
max = n;
}
return max;
}
main() {
int n;
printf("Enter a number: ");
scanf("%d", &n);
printf("Max prime factor: %d", getMaxPrimeFactor(n));
}

## Output

Enter a number: 24024
Max prime factor: 13