hướng dẫn giải bài ôn tập Pascal (Kiểm tra 45phut - lần 1)
Tác giả
Thông điệp
Admin
Tổng số bài gửi : 730 Birthday : 08/02/1985 Cầm Tinh : Age : 39 Ngày nhập học : 17/09/2010
Đến từ : THPT Xuân Lộc Job/hobbies : Giáo Viên Tài Sản Cá Nhân :
Tiêu đề: hướng dẫn giải bài ôn tập Pascal (Kiểm tra 45phut - lần 1) Thu Oct 13, 2011 4:19 pm
Bài 1: kiểm tra tình nguyên tố của số nguyên dương N.
Cách 1: dùng For...to ...do
Code:
program kiem_tra_ngto; uses crt; var i,n,dem:integer; begin writeln('nhap N=');readln(n); dem:=0; for i:=2 to trunc(sqrt(n)) do if n mod i=0 then writeln(n,' ko la so ngto') else writeln(n,' la so ngto'); readln end.
khi dùng chương trình này thì khi chạy, nếu số lớn vong lặp chạy bao nhiêu lần thì nó sẽ thông báo bấy nhiêu lần về số nguyên tố hay không nguyên tố, vì thế các bạn có thể cải tiền thuật toán chút đề ko có hiện tuơng trên bằng cách, dùng thêm 1 biến đếm, nếu cuối cùng biến Đếm vẫn bằng không thì nó là nguyên tố, ngược lại thì ko là nguyên tố
code cải tiến:
Code:
program kiem_tra_ngto; uses crt; var i,n,dem:integer; begin writeln('nhap N=');readln(n); dem:=0; for i:=2 to trunc(sqrt(n)) do if n mod i=0 then dem:=dem +1; if dem=0 then writeln(n,' la so ngto') else writeln(n,' ko la so ngto'); readln end.
Cách 2: dùng repeat ... until.
Code:
program kiem_tra_ngto; uses crt; var i,n:integer; begin writeln('nhap N=');readln(n); i:=1; repeat i:=i 1; until (n mod i=0)or(sqr(i)>n); if sqr(i)>n then writeln(n,' la so ngto') else writeln(n,' ko la so ngto'); readln end.
Bài 2: Đưa ra màn hình và tính tổng các số nguyên tố từ 2 đến N.
chúng ta cần 2 vòng lặp lông nhau đề tìm lọc ra các số nguyên tố. ở đây dùng for..to...do lồng với repeat ... until.
Code:
program tong_ngto; var n,i,t:integer; s:real; begin writeln('nhap N=');readln(n); s:=0; for i:=2 to n do begin t:=1; repeat t:=t+1; until (i mod t=0)or(sqr(t)>i); if sqr(t)>i then begin write(i:6); s:=s+i; end; end; writeln; {xuong hang} write('tong s=',s:9:2); readln
end.
Được sửa bởi Admin ngày Fri Oct 14, 2011 8:25 pm; sửa lần 1.
Admin
Tổng số bài gửi : 730 Birthday : 08/02/1985 Cầm Tinh : Age : 39 Ngày nhập học : 17/09/2010
Đến từ : THPT Xuân Lộc Job/hobbies : Giáo Viên Tài Sản Cá Nhân :
Tiêu đề: Re: hướng dẫn giải bài ôn tập Pascal (Kiểm tra 45phut - lần 1) Thu Oct 13, 2011 7:17 pm
mọi thắc mặc gửi bài tại đây!
RongK9
Tổng số bài gửi : 204 Birthday : 05/01/1994 Cầm Tinh : Age : 30 Ngày nhập học : 31/12/2010
Đến từ : THPT Xuân Lộc Job/hobbies : Student Tài Sản Cá Nhân :
Tiêu đề: Re: hướng dẫn giải bài ôn tập Pascal (Kiểm tra 45phut - lần 1) Fri Oct 14, 2011 1:46 pm
*em có ý kiến là có một số biến đếm thầy viết thiều dấu +
*còn về câu lệnh cho số nguyên tố các bạn có thể cải tiến hơn nữa cho hay và nhanh hơn vì trong lập trình tài nguyên rất quan trọng. mà tài nguyên ở đây là thời gian chạy chương trình và bộ nhớ.
@@bạn thử thực hiện một phép tình đơn giản một chương trình với 4 vòng for .... to....do và một câu lệnh với 4 vòng for nhưng khi chạy vòng cần xét điều kiện nếu không thỏa thì không chạy như vậy có phải nhanh hơn không??
*Xin cải tiến câu lệnh của thầy để các bạn nắm thêm
Code:
program kiem_tra_ngto; uses crt; var i,n,dem:integer; begin writeln('nhap N=');readln(n); dem:=0; If n=2 then writeln(n,' la so nguyen to') else if n>2 then for i:=2 to trunc(sqrt(n)) do if n mod i=0 then dem:=dem + 1; if dem=0 then writeln(n,' la so ngto') else writeln(n,' ko la so ngto'); readln end.
lightspeed
Tổng số bài gửi : 154 Birthday : 07/07/1985 Cầm Tinh : Age : 38 Ngày nhập học : 17/09/2010
Đến từ : THPT Xuân Lộc Job/hobbies : Nhạc,.... Tài Sản Cá Nhân :
Tiêu đề: Trả lời........................ Fri Oct 14, 2011 6:56 pm
Thuật toán xác định số n là số nguyên tố là thuật toán rất thú vị và có nhiều hướng giải quyết giúp chúng ta có được kết quả. Đây là thuật toán dùng biến đếm của thầy, các em có thể tham khảo:
Code:
Program SoNTN; var n,i,dem : integer; begin {Nhap N} write('Nhap N: '); readln(n); {Xet n co la nguyen to hay khong} dem := 0; for i := 1 to n do if n mod i = 0 then dem := dem + 2; if dem = 2 then writeln(N,' la so nguyen to') else writeln(N,' khong la so nguyen to'); readln end.
Thầy xin lỗi về sự nhầm lẫn này. Thuật toán trên dựa trên việc tìm các ước số của n trong đoạn từ [1,n]. Ta tiến hành tìm số nguyên tố dựa trên các bước sau: 1. Nhập vào n; 2. Khởi tạo biến đếm; 3. Dùng vòng for cho i chạy từ 1 đến n; + Nếu n chia hết cho i -> dem = dem + 1; 4. Số nguyên tố là số có hai ước số. Ta sẽ kiểm tra biến dem lúc này có bằng 2 hay không? + Nếu dem = 2 thì n là số nguyên tố; + Nếu dem <> 2 thì n không là số nguyên tố;
Được sửa bởi lightspeed ngày Fri Oct 14, 2011 9:47 pm; sửa lần 2.
Admin
Tổng số bài gửi : 730 Birthday : 08/02/1985 Cầm Tinh : Age : 39 Ngày nhập học : 17/09/2010
Đến từ : THPT Xuân Lộc Job/hobbies : Giáo Viên Tài Sản Cá Nhân :
Tiêu đề: Re: hướng dẫn giải bài ôn tập Pascal (Kiểm tra 45phut - lần 1) Fri Oct 14, 2011 8:24 pm
lightspeed đã viết:
Thuật toán xác định số n là số nguyên tố là thuật toán rất thú vị và có nhiều hướng giải quyết giúp chúng ta có được kết quả. Đây là thuật toán dùng biến đếm của thầy, các em có thể tham khảo:
Code:
Program SoNTN; var n,i,dem : integer; begin {Nhap N} write('Nhap N: '); readln(n); {Xet n co la nguyen to hay khong} dem := 0; for i := 1 to trunc(sqrt(n)) do if n mod i = 0 then dem := dem + 1; if dem = 1 then writeln(N,' la so nguyen to') else writeln(N,' khong la so nguyen to'); readln end.
bài viết của thầy khánh có chút nhầm chút, vì như thế thì ct sẽ nhận 1 là số nguyên tố, nhưng 1 thì ko phải là nguyên tố. nên for chỉ có thể chạy từ 2 -->trunc(n).
Admin
Tổng số bài gửi : 730 Birthday : 08/02/1985 Cầm Tinh : Age : 39 Ngày nhập học : 17/09/2010
Đến từ : THPT Xuân Lộc Job/hobbies : Giáo Viên Tài Sản Cá Nhân :
Tiêu đề: Re: hướng dẫn giải bài ôn tập Pascal (Kiểm tra 45phut - lần 1) Fri Oct 14, 2011 10:12 pm
các bạn thử cải tiến thuật toán xuất và tính tổng các số nguyên tố nhỏ hơn N, với điều kiện chỉ dùng for... to... do và while... do thôi coi xem sao. chứ bài này mình dùng for... to... do kết hợp với repeat... until(đã giải ở trên), vì trong chương trình phồ thông ko có học repeat ...until. các bạn cải tiến nhé. chúc các bạn có những cải tiến hay.
Sponsored content
Tiêu đề: Re: hướng dẫn giải bài ôn tập Pascal (Kiểm tra 45phut - lần 1)
Xem thêm bài khác:
hướng dẫn giải bài ôn tập Pascal (Kiểm tra 45phut - lần 1)
Trang 1 trong tổng số 1 trang
+ Viết tiếng việt có dấu để mọi người đọc được, để không bị hiểu sai ý nghĩa mình muốn diễn giải. + Lời lẽ phải lịch sự, không đuợc thô tục hay cải vã trong diễn đàn. + Nội dung bài trả lởi phải phù hợp với bài của chủ Topic, không được Spam. + Chia sẻ bài sưu tâm thì phải ghi rõ nguồn, để tôn trọng người viết. + Thực hiện những điều trên truớc khi gửi bài, là tôn trọng chính mình. - Nếu chèn smilies vào bài viết thì bật a/A trên phải khung viết bài.