Thread: Problem with a program that finds prime factors of a number and sums them up

  1. #1
    Registered User
    Join Date
    Sep 2016
    Posts
    10

    Problem with a program that finds prime factors of a number and sums them up

    Code:
    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    bool IsDivisible (int number, int divisor)
    {
        return number % divisor == 0;
    }
    
    bool IsPrime (int number)
    {
        for (int i = 2; i < number; i++)
        {
            if (IsDivisible(number, i))
            {
                return false;
            }
        }
        return true;
    }
    
    int IsSqrt (int number)
    {
        for (int i = 1; i <= sqrt(number); i++)
        {
            if (i == sqrt(number))
            {
                return i;
            }
        }
    }
    
    int PrimeFactorSum (int number)
    {
        int sum = 0;
        if (IsPrime(number)) //First check: If it's a prime number, add it to the sum!
        {
            sum = sum + number;
            return sum;
        }
        else if (IsPrime(IsSqrt(number))) // Second check: Is the number a square of a prime number?
        {
            sum = sum + 2 * IsSqrt(number);
            return sum;
        }
        else if (number % 2 == 0 || number % 3 == 0 || number % 5 == 0 || nummber % 7 == 0) 
        {
    // Third check - here it says number is not declared in this scope! can't understand why
            if (number % 2 == 0) // If it's not divisible by 2 it can only be later by 3, 5 or 7
                // if it's not by 2 and 3 then it can only be divisible by 5 or/and 7...
            {
                int result = number / 2;
                sum = sum + 2;
                while (result % 2 == 0)
                {
                    result = result / 2;
                    sum = sum + 2;
                }
                if (IsPrime(result))
                {
                    sum = sum + result;
                    return sum;
                }
                else if (result % 3 == 0)
                {
                    while (result % 3 == 0)
                    {
                        result = result / 3;
                        sum = sum + 3;
                    }
                    if (IsPrime(result))
                    {
                        sum = sum + result;
                        return sum;
                    }
                }
                else if (result % 5)
                {
                    while (result % 5 == 0)
                    {
                        result = result / 5;
                        sum = sum + 5;
                    }
                    if (IsPrime(result))
                    {
                        sum = sum + result;
                        return sum;
                    }
                }
                else if (result % 7)
                {
                    while (result % 7 == 0)
                    {
                        result = result / 7;
                        sum = sum + 7;
                    }
                    if (IsPrime(result))
                    {
                        sum = sum + result;
                        return sum;
                    }
                }
            }
            if (number % 3 == 0)
            {
                int result = number / 3;
                sum = sum + 3;
                while (result % 3 == 0)
                {
                    result = result / 3;
                    sum = sum + 3;
                }
                if (IsPrime(result))
                {
                    sum = sum + result;
                    return sum;
                }
                else if (result % 5)
                {
                    while (result % 5 == 0)
                    {
                        result = result / 5;
                        sum = sum + 5;
                    }
                    if (IsPrime(result))
                    {
                        sum = sum + result;
                        return sum;
                    }
                }
                else if (result % 7)
                {
                    while (result % 7 == 0)
                    {
                        result = result / 7;
                        sum = sum + 7;
                    }
                    if (IsPrime(result))
                    {
                        sum = sum + result;
                        return sum;
                    }
                }
            }
            if (number % 5 == 0)
            {
                int result = number / 5;
                sum = sum + 5;
                while (result % 5 == 0)
                {
                    result = result / 5;
                    sum = sum + 5;
                }
                if (IsPrime(result))
                {
                    sum = sum + result;
                    return sum;
                }
                else if (result % 7)
                {
                    while (result % 7 == 0)
                    {
                        result = result / 7;
                        sum = sum + 7;
                    }
                    if (IsPrime(result))
                    {
                        sum = sum + result;
                        return sum;
                    }
                }
            }
            if (number % 7 == 0)
            {
                int result = number / 7;
                sum = sum + 7;
                while (result % 7 == 0)
                {
                    result = result / 7;
                    sum = sum + 7;
                }
                if (IsPrime(result))
                {
                    sum = sum + result;
                    return sum;
                }
            }
        }
        return sum;
    }
    
    int main()
    {
        int number;
        cout << "Enter a number you wish dismantled into prime factors and see to what they sum up: \n";
        cin >> number;
        cout << "For number:" " " << number << " " "the sum is:" " " <<PrimeFactorSum(number)<< '\n';
    }
    Can someone please help. I don't understand why the compiler keeps telling me "number was not declared in this scope.

  2. #2
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,664
    The error message is
    Code:
    main.cpp:47:71: error: ‘nummber’ was not declared in this scope
       else if (number % 2 == 0 || number % 3 == 0 || number % 5 == 0 || nummber % 7
                                                                         ^
    Check your spelling of the last term!
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  3. #3
    Registered User
    Join Date
    Sep 2016
    Location
    Melbourne, Australia
    Posts
    1
    Hi Salem,

    Thanks for your valuable information and I must say that you have a great eye.

  4. #4
    Registered User
    Join Date
    Sep 2016
    Posts
    10
    Man, thanks a bunch, I don't know how I missed it


    Quote Originally Posted by Salem View Post
    The error message is
    Code:
    main.cpp:47:71: error: ‘nummber’ was not declared in this scope
       else if (number % 2 == 0 || number % 3 == 0 || number % 5 == 0 || nummber % 7
                                                                         ^
    Check your spelling of the last term!

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. help to find prime factors of a number
    By san12345 in forum C Programming
    Replies: 2
    Last Post: 12-15-2015, 11:50 PM
  2. Find Prime Factors Of Given NUmber
    By san12345 in forum C Programming
    Replies: 2
    Last Post: 12-03-2015, 02:35 AM
  3. Replies: 3
    Last Post: 02-19-2009, 10:32 PM
  4. Replies: 15
    Last Post: 11-25-2007, 03:47 PM
  5. Replies: 3
    Last Post: 03-29-2005, 04:24 PM

Tags for this Thread