Euler Problem 3: Largest prime factor : C Programming Solution

Problem :

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

Solution Approach :

Simple approach would be to identify all the prime numbers under the square root of the number 600851475143 which divide the the number 600851475143. When you find a prime factor using this method, keep the track of largest such number to get our result.

Solution :

/* The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?
*/

#include "stdio.h"

#define NUMBER 600851475143ULL

int is_prime(long long unsigned int num)
{
    long long unsigned int i=0;

    if( num == 1) return 1;
    if( num == 2) return 1;
    if( !(num % 2) ) return 0;

    for(i=3;i*i<=num;i+=2)
    {
        if( !(num%i))
            return 0;
    }

    return 1;

}



int main ()
{

    int factors[1000]; /* Lets assume there are hundred factors for the number */
    int fac_count   = 0;
    int largest_fac = 0;
    int prime_count = 0;
    int i=1;
    while ( i*i < NUMBER )
    {
        if ( is_prime(i) && !(NUMBER%i))
        {
            factors[fac_count] = i;
            fac_count++;
            if(largest_fac < i)
                largest_fac = i;
        }
        i++;
    }
    printf (" factors of the" NUMBER " are : ");
    for(i =0;i<fac_count;i++)
    {
        printf(" %d ", factors[i]);
    }

    printf("\n Largest Factor of "NUMBER" %d  \n ",largest_fac);

    return 0;
}


Answer: 6857
Let me know your approach you happen to find a better way to solve this using C programming in the comment section below.
Happy coding !
Categories: Programming

Warning: Unknown: write failed: Disk quota exceeded (122) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/cpanel/php/sessions/ea-php74) in Unknown on line 0