icantech
Lập trình C++
6450
15/11/2023

Tìm hiểu về căn bậc hai trong C++

Các phép tính đại số, tính căn bậc hai thường được ứng dụng rộng rãi trong Toán học. Tuy nhiên, không phải ai cũng biết cách tính căn bậc hai trong C. Trong bài viết này, hãy cùng ICANTECH tìm hiểu cách tính căn bậc hai trong C nhé!

1. Tìm hiểu về căn bậc hai trong C++

1.1 Bình phương của 1 số là gì

Trước khi chúng ta tìm hiểu về căn bậc 2 trong C++, chúng ta sẽ cần hiểu rõ bình phương của 1 số là gì?

Bình phương của một số là kết quả của việc nhân số đó với chính nó. Nếu x là một số, thì bình phương của nó là x2và tính theo công thức:

 x2 = x * x

Ví dụ bình phương của 3 là  32 =3 * 3 = 9

Ví dụ bình phương của - 4 là (-4)2= (-4) * (-4) = 16

Ví dụ, bình phương của số a có thể được biểu diễn dưới dạng a * a.

Ví dụ:

#include <iostream>

using namespace std;

int main() {

    int x = 5;

    int square_x = x * x;

    cout << "Bình phương của " << x << " là " << square_x << endl;

    return 0;

}

Kết quả:

Bình phương của 5 là 25

1.2 Cách viết căn bậc 2 trong c++

Math là một thư viện toán học được cung cấp trong Python. Để tính căn bậc 2 trong thư viện Math ta có thể sử dụng phương thức pow() - tính lũy thừa hoặc phương thức sqrt() - tính căn bậc 2. Dưới đây là 2 phương thức tính căn bậc 2 bằng cách sử dụng thư viện math.h

1.2.1. Sử dụng phương thức pow() để tính căn bậc 2 trong C++

Áp dụng công thức can-bac-hai-trong-C++.

Ví dụ:

#include <iostream>

#include <math.h>

using namespace std;

int main()

{

  double x = 9, result;

  result = pow(x, 0.5);

  cout <<"Căn bậc hai của "<< x << " = " << result;

  cout<<"\n--------------------------------------------\n";

  cout<<"Chương trình này được viết bởi ICANTECH";

}

Kết quả:

Căn bậc hai của 9 = 3

************************************

Chương trình này được viết bởi ICANTECH

1.2.2. Sử dụng phương thức sqrt() để tính căn bậc 2 trong C++

Hàm sqrt trong C++ là một hàm toán học sử dụng để tính căn bậc hai của một số. Để sử dụng hàm sqrt, bạn cần bao gồm đúng thư viện của C++ là <cmath> hoặc <math.h>.

Dưới đây là một ví dụ đơn giản về cách sử dụng hàm sqrt trong C++:

Ví dụ:

#include <iostream>

#include <math.h>

using namespace std;

int main()

{

  double x = 9, result;

  result = sqrt(x);

  cout <<"Căn bậc hai của "<< x << " = " << result;

  cout<<"\n************************************\n";

  cout<<"Chương trình này được viết bởi ICANTECH";

}

Kết quả:

Căn bậc hai của 9 = 3

************************************

Chương trình này được viết bởi ICANTECH

2. Ứng dụng tính căn bậc 2 trong C++

2.1. Kiểm tra số chính phương

Thuật toán: Để kiểm tra xem một số nguyên dương có phải là số chính phương hay không. Chương trình sẽ đi tính căn bậc hai của số đó và kiểm tra xem phần nguyên của căn đó khi bình phương có bằng số ban đầu không.

Ví dụ:

#include <iostream>

#include <cmath>

bool isPerfectSquare(int n) {

    double squareRoot = sqrt(n);

    int intPart = static_cast<int>(squareRoot);

    return (intPart * intPart == n);

}

int main() {

    int num;

    std::cout << "Nhập một số nguyên dương: ";

    std::cin >> num;

    if (isPerfectSquare(num)) {

        std::cout << num << " là số chính phương." << std::endl;

    } else {

        std::cout << num << " không phải là số chính phương." << std::endl;

    }

    return 0;

}

Kết quả:

Nhập một số nguyên dương: 9

9 là số chính phương.

2.2. Kiểm tra số nguyên tố

Thuật toán: Chương trình trên triển khai một thuật toán kiểm tra xem một số nguyên dương có phải là số nguyên tố hay không. Sử dụng một loạt các điều kiện để loại bỏ các trường hợp không phải số nguyên tố, bao gồm các bước kiểm tra chia hết cho 2, 3, và một số điều kiện tăng dần với các số nguyên.

Ví dụ:

#include <iostream>

#include <cmath>

bool isPrime(int n) {

    if (n <= 1) {

        return false; // Không phải số nguyên tố

    }

    if (n <= 3) {

        return true; // 2 và 3 là số nguyên tố

    }

    if (n % 2 == 0 || n % 3 == 0) {

        return false; // Nếu n chia hết cho 2 hoặc 3 thì không phải số nguyên tố

    }

    int limit = sqrt(n);

    for (int i = 5; i * i <= n; i += 6) {

        if (n % i == 0 || n % (i + 2) == 0) {

            return false; // Nếu n chia hết cho i hoặc (i + 2) thì không phải số nguyên tố

        }

    }

    return true; // Nếu không chia hết cho bất kỳ số nào thì là số nguyên tố

}

int main() {

    int num;

    std::cout << "Nhập một số nguyên dương: ";

    std::cin >> num;

    if (isPrime(num)) {

        std::cout << num << " là số nguyên tố." << std::endl;

    } else {

        std::cout << num << " không phải số nguyên tố." << std::endl;

    }

    return 0;

}

Kết quả:

Nhập một số nguyên dương: 7

7 là số nguyên tố.

3. Một số lưu ý khi tính căn bậc 2 trong Python

3.1. Không tính căn bậc 2 của số âm

Nếu truyền đối số là một số âm vào phương thức sqrt() để tính căn bậc 2 thì chương trình sẽ báo lỗi: ValueError: math domain error

Ví dụ:

#include <iostream>

#include <math.h>

using namespace std;

int main()

{

  double x = -9, result;

  result = sqrt(x);

  cout <<"Căn bậc hai của "<< x << " = " << result;

  cout<<"\n************************************\n";

  cout<<"Chương trình này được viết bởi ICANTECH";

}

Kết quả:

Căn bậc hai của -9 = -nan

************************************

Chương trình này được viết bởi ICANTECH

3.2. Một số lưu ý khác

Khi sử dụng hàm sqrt trong C++ để tính căn bậc hai, có một số lưu ý cần xem xét:

  • Kiểu dữ liệu đầu vào:

Hàm sqrt thường được thiết kế để nhận đầu vào là số thực (float hoặc double). Nếu bạn truyền vào một số nguyên, nó sẽ tự động chuyển đổi sang kiểu dữ liệu số thực trước khi tính căn bậc hai. Điều này có thể ảnh hưởng đến độ chính xác của kết quả nếu số nguyên ban đầu lớn.

  • Kiểm tra giá trị đầu vào:

Trước khi sử dụng hàm sqrt, bạn nên kiểm tra xem giá trị đầu vào có âm hay không. Hàm sqrt không thể được áp dụng cho số âm trong miền thực, và nếu bạn truyền vào số âm, kết quả sẽ không xác định.

if (number < 0) {

    // Xử lý lỗi: không thể tính căn bậc hai của số âm

} else {

    double squareRootValue = sqrt(number);

    // Tiếp tục xử lý với squareRootValue

}

  • Sử dụng thư viện đúng:

Đảm bảo bạn đã bao gồm thư viện <cmath> hoặc <math.h> để sử dụng hàm sqrt. Nếu bạn quên bao gồm thư viện, trình biên dịch có thể không nhận diện được hàm và báo lỗi khi biên dịch.

  • Độ chính xác:

Khi sử dụng hàm sqrt, lưu ý rằng kết quả có thể không chính xác 100% vì giới hạn của số thực trong máy tính. Nếu bạn cần độ chính xác cao, có thể cần sử dụng thư viện có hỗ trợ số thực có độ chính xác tùy chọn cao hơn.

  • Xử lý ngoại lệ:

Nếu bạn đang viết một chương trình yêu cầu độ chính xác cao và xử lý ngoại lệ, hãy kiểm tra xem thư viện bạn đang sử dụng có cung cấp cơ chế xử lý ngoại lệ cho trường hợp không thể tính căn bậc hai của một số hay không.

Như vậy, ICANTECH đã cùng bạn tìm hiểu về căn bậc hai trong C++ thông qua hàm sqrt() của thư viện math. Một hàm được sử dụng rất nhiều trong các bài tính toán khi lập trình. Hi vọng bạn sẽ áp dụng được các kiến thức trên để tối ưu cho chương trình của mình. Chúc các bạn thành công!

Nguồn ảnh: ICANTECH.

Share
Tags
Lập trình C++

Bài tương tự