Số chính phương là gì? Kiểm tra số chính phương trong C/C++

Làm thế nào để kiểm tra số chính phương trong C/C++? Hãy cùng tìm hiểu trong bài viết này. Chúng ta sẽ hướng dẫn bạn viết một hàm để xác định xem một số có phải là số chính phương không. Sau đó, chúng ta sẽ thảo luận về cách tìm các số chính phương trong một mảng sử dụng C/C++. Tuy nhiên, trước hết, hãy nói về bài toán và số chính phương để làm rõ cho những người chưa quen thuộc với khái niệm này.

Kiểm tra số chính phương C++

Số chính phương là gì?

Số chính phương là số tự nhiên có căn bậc hai cũng là số tự nhiên. Nghĩa là số chính phương bằng bình phương của một số nguyên. Ví dụ, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100 đều là các số chính phương.

Số chính phương có thể được biểu diễn dưới dạng: n^2 = x, trong đó n là số chính phương và x là số nguyên dương.

Số chính phương có một số tính chất sau:

  • Số chính phương chỉ có thể tận cùng bằng 0, 1, 4, 5, 6, 9.
  • Số chính phương không có dạng 3n + 2, 4n + 2 hoặc 4n + 3 (với n thuộc tập hợp số tự nhiên N).
  • Số chính phương chia cho 3 luôn có số dư là 0 hoặc 1; chia cho 4 luôn dư 0 hoặc 1; số chính phương lẻ khi chia 8 luôn dư 1.
  • Số ước nguyên dương của số chính phương là một số lẻ.
  • Số chính phương chia hết cho số nguyên tố p thì chia hết cho p^2.

Bài toán kiểm tra số chính phương

Bài toán 1: Kiểm tra số chính phương trong C/C++

Trong bài toán này, chúng ta sẽ viết một chương trình để kiểm tra xem một số nguyên dương n có phải là số chính phương hay không. Một số chính phương là số có căn bậc hai là một số nguyên. Chúng ta sử dụng ngôn ngữ lập trình C/C++ để giải quyết bài toán này.

Cách 1: Sử dụng vòng lặp

#include 

int main() {
  int n;
  printf("Nhập n: ");
  scanf("%d", &n);
  int i = 0;
  while (i * i <= n) {
    if (i * i == n) {
      printf("%d là số chính phương!n", n);
      return 0;
    }
    ++i;
  }
  printf("%d không phải số chính phương!n", n);
  return 0;
}

Cách 2: Sử dụng hàm sqrt()

#include 
#include 

int main() {
  int n;
  printf("Nhập n: ");
  scanf("%d", &n);
  int sqr = sqrt(n);
  if (sqr * sqr == n) {
    printf("%d là số chính phương!n", n);
  } else {
    printf("%d không phải số chính phương!n", n);
  }
  return 0;
}

Bài toán 2: Tìm số chính phương trong mảng

Trong bài toán này, chúng ta sẽ viết một chương trình để tìm và in ra các số chính phương trong một mảng số nguyên. Chúng ta cũng sử dụng ngôn ngữ C/C++ để giải quyết bài toán này.

#include 
#include 

using namespace std;

bool isPerfectSquare(int n) {
  int sqrtN = sqrt(n);
  return (sqrtN * sqrtN == n);
}

int main() {
  int n;
  do {
    cout << "Nhập n: ";
    cin >> n;
  } while (n <= 0);

  int a[n];

  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }

  cout << "Các số chính phương:n";
  for (int i = 0; i < n; i++) {
    if (isPerfectSquare(a[i])) {
      cout << a[i] << " ";
    }
  }

  return 0;
}

Kết luận

Như vậy, chúng ta đã tìm hiểu về số chính phương và cách kiểm tra và tìm các số chính phương trong ngôn ngữ lập trình C/C++. Mong rằng bài viết này đã mang lại những thông tin hữu ích cho bạn.

FEATURED TOPIC