Finding square roots in surd form

ghz 13hours ago ⋅ 1 views

I'm trying to build a program that let's you multiply two square roots and display the answer in surd form if the answer isn't an integer.

I've seen answers here and here, although I don't understand C++ and C#, so I don't have a clue on what to do. The first thing I've done is multiply the two numbers inside the square roots together, then I can display the answer if it is an integer, but if it isn't it completely messes up.

Answer

To solve this problem, let's break it down step-by-step:

Problem Overview:

You want to create a program that:

  1. Multiplies two square roots.
  2. Displays the result as a surd (radical form) if the result is not an integer.
  3. If the result is an integer, display it as a regular number.

Approach:

When multiplying two square roots, the result can be simplified by combining the terms under the square root:

  • (\sqrt{a} \times \sqrt{b} = \sqrt{a \times b})

If the result of (a \times b) is a perfect square (i.e., it can be simplified to an integer), we will return that integer. If it's not a perfect square, we will return the result as a square root (i.e., surd form).

Steps:

  1. Multiply the numbers inside the square roots.
  2. Check if the product is a perfect square.
  3. If it is a perfect square, return the square root as an integer.
  4. If it isn't a perfect square, return the result as a square root expression.

Example:

For (\sqrt{8} \times \sqrt{2}):

  • Multiply inside: ( 8 \times 2 = 16 )
  • (\sqrt{16} = 4), which is an integer, so return 4.

For (\sqrt{8} \times \sqrt{3}):

  • Multiply inside: ( 8 \times 3 = 24 )
  • (\sqrt{24}) is not an integer, but it can be simplified to (\sqrt{4 \times 6} = 2\sqrt{6}).

Python Code Example:

Here’s how you can implement this in Python:

import math

def multiply_square_roots(a, b):
    # Step 1: Multiply the values inside the square roots
    product = a * b
    
    # Step 2: Check if the product is a perfect square
    sqrt_product = math.isqrt(product)  # Integer square root (without floating point error)
    if sqrt_product * sqrt_product == product:
        return sqrt_product  # It's a perfect square, return the integer square root
    else:
        # Step 3: If it's not a perfect square, return in surd form
        # We can simplify the square root if possible
        simplified_sqrt = simplify_surd(product)
        return f"√{simplified_sqrt}"

def simplify_surd(product):
    # Step 4: Try to simplify the square root (factor out perfect squares)
    # Try to factor the product and remove perfect squares
    factor = 2  # Start with the smallest factor
    while factor * factor <= product:
        if product % (factor * factor) == 0:
            product //= factor * factor
        else:
            factor += 1
    return product

# Example usage
a = 8
b = 2
result = multiply_square_roots(a, b)
print(result)  # Output should be 4

a = 8
b = 3
result = multiply_square_roots(a, b)
print(result)  # Output should be √6

How It Works:

  1. Multiplying the square roots: We first multiply the numbers under the square roots.
  2. Checking for perfect square: We check if the product is a perfect square using math.isqrt(). This function returns the integer square root of a number, and we can check if squaring it gives back the original number.
  3. Simplifying surd form: If the product is not a perfect square, we attempt to simplify it by factoring out perfect squares. The function simplify_surd() attempts to remove factors that are perfect squares and returns the simplified expression.

Example Outputs:

For the input values:

  1. a = 8, b = 2: The result is 4, as (\sqrt{8} \times \sqrt{2} = \sqrt{16} = 4).
  2. a = 8, b = 3: The result is √6, as (\sqrt{8} \times \sqrt{3} = \sqrt{24} = 2\sqrt{6}).

Conclusion:

This approach ensures that you:

  • Multiply the numbers inside the square roots.
  • Check if the result is a perfect square.
  • Simplify the surd if it's not a perfect square.

You can adapt this approach in other programming languages with similar logic. Let me know if you'd like to implement it in another language or need further clarification!