Viết chương trình kiểm tra số chính phương pascal
You are viewing this post: Viết chương trình kiểm tra số chính phương pascal
Trong bài viết này mình sẽ hướng dẫn các bạn viết chương trình kiểm tra số chính phương pascal và scratch và một số bài tập có liên quan.
Các bạn đã biết số chính phương pascal là số viết được dưới dạng bình phương của một số tự nhiên chẳng hạn 0, 1, 4, 9, 16, 25, … số chính phương được ứng dụng rất nhiều trong toán học, thuật toán kiểm tra số chính phương thì lại hết sức đơn giản bên dưới với An Vượng Villa nhé.

I. Hướng dẫn về số chính phương pascal
II. Hàm kiểm tra số chính phương pascal
Dưới đây là hàm kiểm tra số chính phương : readln(n); x:=trunc(sqrt(n); IF sqr(x)=n then write(n,’la so chinh phuong); ELSE write(n,’ khong phai la mot so chinh phuong
III. Thuật toán kiểm tra số chính phương
Vì căn bậc hai và bình phương là hai phép toán ngược nhau nên mình lợi dụng điều này để xây dựng thuật toán kiểm tra số chính phương.
Nôm na như thế này nhé, mình muốn kiểm tra xem số 5 có phải là số chính phương không thì mình tính căn bậc hai của 5, sau đó chỉ lấy phần nguyên thôi kết quả là 2, lại lấy 2 bình phương lại ta được 4, 4 không bằng 5 nên 5 không phải là số chính phương.
Thuật toán có thể ghi ngắn gọn lại như sau :
” Nếu bình phương của phần nguyên của căn bậc hai của n đúng bằng n thì n là số chính phương còn không thì n không phải là số chính phương”
Câu chữ hơi nhiều “ngoặc” vì vậy bạn hãy ngẫm nghĩ cho kĩ để hiểu thuật toán.
IV. Viết chương trình kiểm tra số chính phương pascal
Trong chương trình có lệnh sqr(trunc(sqrt(n))) ý nghĩa như sau;
- sqr(n): Hàm tính bình phương của n
- trunc(x): Cho phần nguyên của x
- sqrt(n): Tính căn bậc hai của n
Như vậy sqr(trunc(sqrt(n))) tính bình phương của phần nguyên của căn bậc hai của n
Viết chương trình kiểm tra số chính phương trong pascal nâng cao
Program KT_Sochinhphuong;
Uses crt;
Type ArrInt = array[1..250] of integer;
Var N,i,x : integer;
A: ArrInt;
Procedure Nhap_Mang(Var A:ArrInt;Var N:integer);
Var i:integer;
Begin
Write(‘Nhap chieu dai cua mang: ‘);
Readln(N);
For i:=1 to N do
Begin
Write(‘Nhap gt phan tu thu a[‘,i,’]=’);
Readln(A[i]);
End;End;
Procedure KT_So_Chinh_Phuong(Var A:ArrInt;Var N:integer);
Var i:integer;
Begin
Writeln(‘Cac so chinh phuong co trong mang A: ‘);
For i:=1 to N do
Begin
x:=trunc(sqrt(A[i]));
if sqr(x)=a[i] then
Write(A[i]:4);
End;
End;Begin
Nhap_Mang(A,N);
KT_So_Chinh_Phuong(A,N);
Readln;
End.
Ở đây lệnh trong Scratch hơi khác trong Pascal một chút nhưng thuật toán thì không có gì thay đổi, hàm “làm tròn xuống” trong Scratch giống như hàm trunc() trong Pascal.
V. Bài tập luyện tập liên quan đến số chính phương
Các bạn hãy luyện tập chương trình sau để ôn lại cách sử dụng chương trình con, thuật toán cộng dồn và thuật toán kiểm tra số chính phương:
Bài 1 – In ra các số chính phương nhỏ hơn n pascal
Đề bài: Viết chương trình nhập vào một số n (n <2 tỉ), xuất ra những số chính phương nhỏ hơn hoặc bằng n và tổng của chúng
Dữ liệu vào file: Tim_cp.inp | Dữ liệu ra file: Tim_cp.out |
Chứa số n (n <2 tỉ) | Dòng 1: Dãy các số chính phương
Dòng 2: Tổng của chúng |
Xin chào và hẹn gặp lại các bạn trong bài viết về số hoàn hảo
Bài 2 – In ra màn hình các số chính phương pascal
Đề bài: Viết chương trình pascal nhập N từ bàn phím. Đếm xem có bao nhiêu số chính phương từ 1 tới n (sử dụng câu lệnh lặp và câu lệnh điều kiện) đơn giản thôi nha. Dưới đây là viết chương trình kiểm tra số chính phương pascal.
program btsydn;
uses crt;
var i, n, d, a: integer;
begin
clrscr;
write(‘Nhap n = ‘); readln(n);
d:=0;
for i:=1 to n do if n>0 then
begin
a:=trunc(sqrt(i));
if sqr(a)=i then d:=d+1;
end;
writeln(‘Co ‘, d, ‘ so chinh phuong tu 1 -> n ‘);
readln
end.
VI. Câu hỏi liên quan: File Word hướng dẫn viết chương trình kiểm tra số chính phương bằng Scratch
VII. Video hướng dẫn kiểm tra số chính phương pascal
The article is compiled and aggregated from many sources by An Vượng Villa.
See more articles in the same category here: Tin Học