Kiểm tra số chính phương trong python | Laptrinhcanban.com

Kiểm tra số chính phương trong python

Hướng dẫn cách kiểm tra số chính phương trong python. Bạn sẽ học được cách tạo hàm kiểm tra số chính phương trong python, cũng như cách liệt kê tất cả các số nguyên tố nhỏ hơn n bằng python sau bài học này.

Chúng ta có 2 phương pháp để kiểm tra số chính phương trong python như sau:

  • Kiểm tra số chính phương trong python bằng lũy thừa
  • Kiểm tra số chính phương trong python bằng căn bậc 2

Số chính phương trong python

Theo wikipedia thì khái niệm số chính phương như sau:

Số chính phương hay còn gọi là số hình vuông là số tự nhiên có căn bậc hai là một số tự nhiên, hay nói cách khác, số chính phương bằng bình phương của một số tự nhiên.

Khái niệm số chính phương trong python cũng giống như trên. Chúng ta coi một số là số chính phương trong Python nếu như nó bằng bình phương của một số tự nhiên. Đây là chìa khóa thứ nhất giúp chúng ta có thể tìm được số chính phương trong python.

Số chính phương trong python

Nói cách khác, căn bậc 2 của một số chính phương chính là một số tự nhiên. Đây là chìa khóa thứ 2 giúp chúng ta có thể tìm được số chính phương trong python.

Kiểm tra số chính phương trong python bằng lũy thừa

Cách đầu tiên để kiểm tra số chính phương trong python là sử dụng khái niệm số chính phương bằng bình phương của một số tự nhiên.

Điều đó có nghĩa, với một số bất kỳ, nếu chúng ta có thể tìm được một số tự nhiên mà bình phương của nó bằng với số đã cho, thì số đó chính là số chính phương.

Chúng ta có thể tạo hàm kiểm tra số chính phương trong python với cách này như sau:

def find_square_number(n):
#flag = 1 => số chính phương
#flag = 0 => không phải số chính phương

flag = 0;
#Tìm số bất kỳ nhỏ hơn hoặc bằng n mà bình phương bằng n
if any(i**2 == n for i in range(n+1)):
flag = 1
return flag
  • Hàm any() được sử dụng để kiểm tra xem có bất kỳ phần tử chỉ định nào trong iterable đã cho hay không.
  • Hàm for i in range trong python giúp chúng ta tạo vòng lặp với số lần lặp chỉ định. Xem thêm tại: Vòng lặp for range trong Python
  • Hàm trên sử dụng cách viết code gọn bằng list comprehension. Xem thêm tại: Sử dụng list comprehension trong Python

Chúng ta có thể gọi hàm này và sử dụng trong chương trình nhập n kiểm tra n có phải số chính phương không trong python như sau:

def find_square_number(n):
#flag = 1 => số chính phương
#flag = 0 => không phải số chính phương

flag = 0;
#Tìm số bất kỳ nhỏ hơn hoặc bằng n mà bình phương bằng n
if any(i**2 == n for i in range(n+1)):
flag = 1
return flag


n = int(input(">> nhap mot so tu nhien: "))
check = find_square_number(n);

if check == 1:
print(n,"la so chinh phuong")
else:
print(n,"khong phai la so chinh phuong")

Lưu ý là số nhập từ bàn phím phải là một số tự nhiên.

Màn hình nhập liệu và kết quả kiểm tra số chính phương trong python sẽ như sau:

>> nhap mot so tu nhien: 4
4 la so chinh phuong

>> nhap mot so tu nhien: 5
5 khong phai la so chinh phuong

>> nhap mot so tu nhien: 16
16 la so chinh phuong

>> nhap mot so tu nhien: 25
25 la so chinh phuong

Kiểm tra số chính phương trong python bằng căn bậc 2

Cách thứ 2 để kiểm tra số chính phương trong python là sử dụng tính chất căn bậc 2 của một số chính phương chính là một số tự nhiên.

Điều đó có nghĩa, với một số bất kỳ, nếu căn bậc 2 của nó là một số tự nhiên, thì số đó chính là số chính phương.

Chúng ta có thể sử dụng hàm math.sqrt(n) trong module math, hoặc là lũy thừa số đã cho với số mũ 0.5 với cách viết n** 0.5.

Để kiểm tra kết quả căn bậc 2 có phải là số tự nhiên không, chúng ta có thể sử dụng tới hàm is_integer().

Và chúng ta tạo hàm kiểm tra số chính phương trong python với cách này như sau:

def find_square_number_2(n):
#flag = 1 => số chính phương
#flag = 0 => không phải số chính phương

flag = 0;
#Tìm số bất kỳ nhỏ hơn n mà bình phương bằng n
if (n ** .5).is_integer(): ## if (math.sqrt(n)).is_integer():
flag = 1
return flag

Lưu ý là nếu sử dụng if (math.sqrt(n)).is_integer() thay cho if (n ** .5).is_integer() ở trên thì chúng ta cần load moduel math vào chương trình bằng dòng import math.

Chúng ta có thể gọi hàm này và sử dụng trong chương trình nhập n kiểm tra n có phải số chính phương không trong python như sau:

def find_square_number_2(n):
#flag = 1 => số chính phương
#flag = 0 => không phải số chính phương

flag = 0;
#Tìm số bất kỳ nhỏ hơn n mà bình phương bằng n
if (n ** .5).is_integer(): ## if (math.sqrt(n)).is_integer():
flag = 1
return flag

n = int(input(">> nhap mot so tu nhien: "))
check = find_square_number_2(n);

if check == 1:
print(n,"la so chinh phuong")
else:
print(n,"khong phai la so chinh phuong")

Lưu ý là số nhập từ bàn phím phải là một số tự nhiên.

Màn hình nhập liệu và kết quả kiểm tra số chính phương trong python sẽ như sau:

>> nhap mot so tu nhien: 4
4 la so chinh phuong

>> nhap mot so tu nhien: 5
5 khong phai la so chinh phuong

>> nhap mot so tu nhien: 16
16 la so chinh phuong

>> nhap mot so tu nhien: 25
25 la so chinh phuong

Liệt kê tất cả các số nguyên tố nhỏ hơn n

Sử dụng một trong 2 phương pháp ở trên, chúng ta có thể liệt kê tất cả các số nguyên tố nhỏ hơn n bằng python.

Và dưới đây là ví dụ về chương trình nhập n liệt kê tất cả các số nguyên tố nhỏ hơn n trong Python:

def find_square_number_2(n):
#flag = 1 => số chính phương
#flag = 0 => không phải số chính phương

flag = 0;
#Tìm số bất kỳ nhỏ hơn n mà bình phương bằng n
if (n ** .5).is_integer(): ## if (math.sqrt(n)).is_integer():
flag = 1
return flag

n = int(input(">> nhap so n: "))

result=[]
for i in range(n):
check = find_square_number_2(i);
if check == 1:
result.append(i)
print(result)

Kết quả:

>> nhap so n: 10
[0, 1, 4, 9]

>> nhap so n: 20
[0, 1, 4, 9, 16]

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách kiểm tra số chính phương trong python, cũng như cách liệt kê tất cả các số nguyên tố nhỏ hơn n bằng python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.