Bài 1: Số Siêu Nguyên Tố (5 điểm)
Có thể bạn quan tâm
Nỗ lực hết sức để thành công hay thất bại ta đều nở nụ cười
Tìm kiếm
Display results as :Số bàiChủ đề
Advanced Search
Tin học Tây Sơn :: Bài tập
Trang 1 trong tổng số 1 trangBài 1: Số siêu nguyên tố (5 điểm)
by Admin Sun Mar 01, 2015 1:48 pm
Code:Tại Vương quốc Byte xinh đẹp, mỗi người luôn chọn cho mình một con số, theo họ số nguyên tố là số mang lại sự may mắn và ai tìm được một số siêu nguyên tố còn may mắn hơn nữa. Số siêu nguyên tố là một số nguyên tố mà khi bỏ 1 số tùy ý các chữ số bên phải của nó thì phần còn lại vẫn là 1 số nguyên tố. Số 2333 là 1 số siêu nguyên tố vì 2333 là một số nguyên tố và 233, 23, 2 cũng là các số nguyên tố.Dữ liệu vào: SNT.INP Chứa một số nguyên dương n (n ≤ 109)Dữ liệu ra: SNT.OUT Nếu N là siêu nguyên tố ghi giá trị 1, ngược lại ghi giá trị 0Ví dụ:SNT.INP2333SNT.OUT1AdminGiáo viênTổng số bài gửi : 192Điểm thành tích : 18489Reputation : -6Join date : 29/12/2014 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Admin Sun Mar 01, 2015 1:49 pm
Ý tưởng:- Hàm kiểm tra Nguyên tố. Vẫn có bạn làm không làm được.- lần lượt kiểm tra số N và số N bỏ đi 1 chữ số cuối cùng ( dùng phép tính DIV) có phải là số NT hay không. N và tất cả các số sinh ra từ N bỏ bớt chữ số là đúng thì nó là số SNT.+ Bài này yêu cầu các em phải biết viết thủ tục kiểm tra NT, tách các chữ trong một số...Em nào làm sai bài này thì đúng là "không phải dạng vừa đâu" AdminGiáo viênTổng số bài gửi : 192Điểm thành tích : 18489Reputation : -6Join date : 29/12/2014 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Admin Sun Mar 01, 2015 2:27 pm
Chiến:program bai1;uses crt;var fi,fo:text;var m:integer;kt,ok:boolean;procedure docfile;begin read(fi,m);end;function ktsnt(m:integer):boolean;var j:integer;begin ok:=true; for j:=2 to m-1 do if m mod j=0 then ok:=false; ktsnt:=ok;end;function timsnt(m:integer):boolean;begin kt:=true; while(m>0)do if ktsnt(m)=false then kt:=false; m:=m div 10;timsnt:=kt;end;beginclrscr;assign(fi,'d:\chienbd\snt.inp');assign(fo,'d:\chienbd\snt.out');reset(fi);rewrite(fo);docfile;ktsnt(m);if(timsnt(m)=true)then writeln(fo,'1')else writeln(fo,'0');close(fi);close(fo);readln;end. Hàm ktsnt nên thay bằng tên ktnt. VìHàm timSNT bị sai! Mỗi lần kiểm tra xong phải giảm m đi một chữ số (sử dụng lênh n div 10). Thêm điều kiện kt=true và điều kiện vòng lặp vì nếu có một số bất kỳ sai thì chương trình không cần kiểm tra số còn lại nữa. Thầy thật sự thất vọng vì em đó Được sửa bởi Admin ngày Sun Mar 01, 2015 2:34 pm; sửa lần 1.AdminGiáo viênTổng số bài gửi : 192Điểm thành tích : 18489Reputation : -6Join date : 29/12/2014 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Admin Sun Mar 01, 2015 2:33 pm
Chinh:program bai1;uses crt;var fi,fo:text; n,i,j:integer;procedure doc;beginread(fi,n);end;function ktnt(n:integer):boolean;var i:integer;begin ktnt:=true; for i:=2 to n-1 do if n mod i = 0 then ktnt:=false;end;function sosieunguyento(n:integer):boolean;var kt:boolean;beginkt:=true;while n>0 do begin if ktnt(n) then kt:=true else kt:=false; n:=n div 10; end;sosieunguyento:=kt;end;{procedure sosieunguyento;var kt:boolean;begin kt:=true; while (n<>0) and (kt=true) do if ktnt(n)=true then n:=n div 10 else kt:=false; if kt=true then writeln(fo,'1') else write(fo,'0');end;}beginclrscr;assign(fi,'d:\dulieu.inp');assign(fo,'d:\ketqua.out');reset(fi);rewrite(fo);doc;{sosieunguyento;}if (sosieunguyento(n)=true ) then write(fo,'1') else write(fo,'0');close(fi);close(fo);readln;end.Em xem lại đề bài yêu cầu dữ liệu nhập vào tên là gì? sao lại đặt tên và lưu tùy tiện như vậy? Bài này em làm đúng nhưng vì tạo tệp dữ liệu không đúng dẫn tới sai kết quả. Như thế coi như là sai -> khi đi thi người ta cho 0 điểm. AdminGiáo viênTổng số bài gửi : 192Điểm thành tích : 18489Reputation : -6Join date : 29/12/2014 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Admin Sun Mar 01, 2015 2:49 pm
Vọng:program snt;uses crt;var fi,fo:text; n:integer;procedure laydulieu;begin read(fi,n);end;function ktnt(x:integer):boolean;var i:integer; ok:boolean;begin if x<= 1 then ktnt:=false else begin ok:=true; for i:=2 to x-1 do if x mod i=0 then ok:=false; ktnt:=ok; end;end;function ktsnt(x:integer):boolean;var ok:boolean;begin ok:=true; while x<>0 do begin if ktnt(x) then ok:=true else ok:=false; x:=x div 10; end; ktsnt:=ok;end;procedure indulieu;begin if (ktnt(n)=true) and (ktsnt(n)=true) then write(fo,'1') else write(fo,'0');end;Begin clrscr; assign(fi,'d:\danhvong\snt.inp'); reset(fi); assign(fo,'d:\danhvong\snt.out'); rewrite(fo); laydulieu; indulieu; close(fi); close(fo); readlnend. hàm kiểm tra SNT của em chưa đúng vì em quên điều kiện kiểm tra phải đúng trong suốt quá trình bớt từng số hạng của m. ví dụ số NT 547: nếu chương trình của e sẽ cho kết quả là đúng số SNT (nguyên nhân vì sao thì e có thể tìm hiểu thử).. Bài này em chỉ được 3/5điểm thôi. Rút kinh nghiệm lần sau nhé p/s: Hàm in dữ liệu có cần phải đưa thêm điều kiện ktnt(n)=true nữa không?AdminGiáo viênTổng số bài gửi : 192Điểm thành tích : 18489Reputation : -6Join date : 29/12/2014 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Admin Sun Mar 01, 2015 2:54 pm
Định:program Bai1;uses crt;var fi,fo:text; n,i:longint; k:boolean;function KTNT(x:longint):boolean; var i:longint; kt:boolean; begin kt:=true; i:=2; if x<=1 then kt:=false; while (kt=true) and (i<x) do begin if x mod i = 0 then kt:=false; inc(i); end; ktnt:=kt; end;function KTSNT(var x:longint):boolean; var t,n:longint; begin k:=true; while (x<>0) and (k=true) do if KTNT(x)=true then x:=x div 10 else k:=false; KTSNT:=k; end;procedure Xuli; begin assign(fi,'D:\DINH\snt.INP'); assign(fo,'D:\DINH\snt.OUT'); reset(fi);rewrite(fo); read(fi,n); if KTSNT(n)=true then writeln(fo,1) else writeln(fo,0); close(fi); close(fo); writeln('Complete'); end;begin clrscr; Xuli; readlnend. Không tìm thấy lỗi ở đây. 5/5điểm AdminGiáo viênTổng số bài gửi : 192Điểm thành tích : 18489Reputation : -6Join date : 29/12/2014 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Admin Sun Mar 01, 2015 9:28 pm
Lợi:Program Bai1;Uses crt;Var A , B:text; n: integer;Procedure Laydulieu;Begin Assign(A, 'D:\SNT.INP'); Reset(A); read(A, n); Close(A);end;Function KTNT(X: integer): boolean;Var i: integer;Begin KTNT:= true; If X = 1 then KTNT:= false else If x <> 2 then For i:= 2 to x-1 do begin If X mod i = 0 then begin KTNT:= false; break; end; end;end;Function KT(X: integer): boolean;Var t: string; i, p, l: integer;Begin STR(X,t); KT:= true; For i:= length(t) downto 2 do begin Delete(t, i, 1); VAL(t, p, l); If KTNT(p) = false then begin KT:= false; Break; end; end;end;Begin Laydulieu; Assign(B, 'D:\SNT.OUT'); Rewrite(B); If KTNT(n) = false then write(B, '0') else begin If KT(n) = true then write(B, '1') else write(B, '0'); end; Close(B);end.Em đúng là chuyên gia xử lý kiểu dữ liệu string Với bài này em nên xử lý đơn giản với kiểu số thì tốt hơn đó Được sửa bởi Admin ngày Sun Mar 01, 2015 9:37 pm; sửa lần 1.AdminGiáo viênTổng số bài gửi : 192Điểm thành tích : 18489Reputation : -6Join date : 29/12/2014 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Admin Sun Mar 01, 2015 9:36 pm
Ly:program sosieunguento;uses crt;var fi,fo:text; n:integer;procedure doc;begin read(fi,n);end;function ktnt(var x:integer):boolean;var ok:boolean;i:integer;begin ok:=true; for i:=2 to x-1 do if x mod i =0 then ok:=false; ktnt:=ok;end;procedure xuli;var i:integer; ok:boolean;begin ok:=false; while (n>0) and ok do if ktnt(n)=true then begin ok:=true; n:=n div 10; end; if ok=true then writeln(fo,1) else writeln(fo,0);end;begin clrscr; assign(fi,'d:\myly\snt.inp'); reset(fi); assign(fo,'d:\myly\snt.out'); rewrite(fo); doc; xuli; close(fi); close(fo); readln;end. Xem lại thủ tục xuly nhé. 0/5 điểm AdminGiáo viênTổng số bài gửi : 192Điểm thành tích : 18489Reputation : -6Join date : 29/12/2014 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Admin Sun Mar 01, 2015 9:48 pm
Nguyệt:program bai1;uses crt;var n:integer; a:array[1..100] of integer; f,f1:text;procedure docfile(var f:text);begin read(f,n);end;function snt(x:integer):boolean;var ok:boolean; i:integer;begin ok:=true; for i:=2 to x-1 do if x mod i=0 then ok:=false; snt:=ok;end;function ssnt(x:integer):boolean;var i,j:integer; kt:boolean;begin if snt(x) then begin i:=0; while x>0 do begin i:=i+1; a[i]:=x mod 10 ; x:=x div 10; end; end; kt:=false; for j:=1 to i do if snt(a[j]) then kt:=true; ssnt:=kt;end;procedure xuli(x:integer);begin if (snt(x)=true) and (ssnt(x)=true) then writeln(f1,'1') else writeln(f1,'0');end;begin clrscr; assign(f,'d:\snt.inp'); assign(f1,'d:\snt.out'); reset(f); rewrite(f1); docfile(f); snt(n); ssnt(n); xuli(n); close(f); close(f1); readlnend. Sai ở hàm ssnt: nên kiểm tra trực tiếp các số khi bỏ bớt số hạng, ở bài này không cần phải lưu vào mảng rồi xử lý tiếp đâu; Nếu em dùng lệnh for để kiểm tra số SNT sẽ xảy ra trường hợp trong quá trình bỏ bớt có số không phải là nguyên tố nhưng vẫn vẫn tiếp tục kiểm tra (dẫn tới kết quả sai), ví dụ em kiểm tra số nt 547, số 54 không là số nt nhưng máy vẫn tiếp tục kiểm tra số 5, số 5 là số nt nên kết quả sẽ bị sai. Sai rồi ->2/5điểm AdminGiáo viênTổng số bài gửi : 192Điểm thành tích : 18489Reputation : -6Join date : 29/12/2014 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Admin Sun Mar 01, 2015 9:51 pm
Thủy:program bai1;uses crt;var f,t:text; n:integer;procedure docfile;begin read(f,n);end;function ngto(n:integer):boolean;var i:integer;begin ngto:=true; for i:=2 to n-1 do if n mod i=0 then ngto:=false;end;procedure snt;var ok,kt:boolean;beginkt:=true; while (n<>0)and(kt) and (ngto(n)) do begin n:=n div 10; if not ngto(n) then begin kt:=false; write(t,'0'); break; end; end; if kt then writeln(t,'1');end;begin assign(f,'d:\thuy\snt.inp'); reset(f); assign(t,'d:\thuy\snt.out'); rewrite(t); docfile; snt; close (f); close(t); readln;end. google 5/5đ AdminGiáo viênTổng số bài gửi : 192Điểm thành tích : 18489Reputation : -6Join date : 29/12/2014 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Admin Sun Mar 01, 2015 9:56 pm
Như:program bai1;uses crt;var fi,fo:text; n,h:longint; a:array[1..10000]of integer;procedure docdulieu;begin assign(fi,'d:\snt.inp'); reset(fi); readln(fi,n); close(fi);end;function ktnt(var x:longint):boolean;var kt:boolean; i:integer;begin i:=2; kt:=true; while (i<x)and(kt=true) do begin if x mod i = 0 then kt:=false else i:=i+1; end; ktnt:=kt;end;procedure tach(var n:longint);begin h:=0; while n<>0 do begin inc(h); a[h]:=n mod 10; n:=n div 10; end;end;function ktsnt(var n:longint):boolean;var kt:boolean; t:longint;begin kt:=false; if (ktnt(n)=true)and(a[h]<>1) then kt:=true; while (n<>0)and(kt=true) do begin t:=n mod 10; if ktnt(t)=true then n:=n div 10 else kt:=false; end; ktsnt:=kt;end;begin clrscr; assign(fo,'d:\snt.out'); rewrite(fo); docdulieu; tach(n); if ktsnt(n)=true then writeln(fo,1) else writeln(fo,0); close(fo);end. SAI -> Làm lại ngay lập tức AdminGiáo viênTổng số bài gửi : 192Điểm thành tích : 18489Reputation : -6Join date : 29/12/2014 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Admin Sun Mar 01, 2015 10:26 pm
Trang:program snt;uses crt;var fi,fo:text; n,i:integer; kt,ok:boolean;procedure docfile;begin readln(fi,n);end;function nto(n:integer):boolean;beginkt:=true;for i:= 2 to n-1 doif n mod i=0 then kt:=false;nto:=kt;end;function snto(n:integer):boolean;beginok:=true; while n<>0 do begin if nto(n)=true then ok:=true else ok:=false; n:=n div 10; end;snto:=ok;end;beginassign(fi,'e:\trang\snt.inp');assign(fo,'e:\trang\snt.out');reset(fi);rewrite(fo);docfile;snto(n);if (nto(n)=true) and (snto(n)=true) then write(fo,'1') else write(fo,'0');close(fi);close(fo);readlnend. Lại một người nữa quên đưa điều kiện dừng khi kiểm tra nguyên tố sai khi bỏ một số. Ví dụ số 547 là số SNT là sai. 2/5đ thôi, chúc bạn may mắn lần sau AdminGiáo viênTổng số bài gửi : 192Điểm thành tích : 18489Reputation : -6Join date : 29/12/2014 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by thuynhu Mon Mar 02, 2015 11:50 am
sua bai 1:Code:program bai1;uses crt;var fi,fo:text;n,h:longint;a:array[1..10000]of integer;procedure docdulieu;beginassign(fi,'d:\snt.inp');reset(fi);readln(fi,n);close(fi);end;function ktnt(var x:longint):boolean;var kt:boolean;i:integer;begini:=2;kt:=true;while (i<x)and(kt=true) dobeginif x mod i = 0 then kt:=falseelse i:=i+1;end;ktnt:=kt;end;procedure tach(var n:longint);var t:longint;beginh:=0;t:=n;while t<>0 dobegininc(h);a[h]:=t mod 10;t:=t div 10;end;end;function ktsnt(var n:longint):boolean;var kt:boolean;t:longint;beginkt:=false;if (ktnt(n)=true)and(a[h]<>1) then kt:=trueelse if (ktnt(n)=false)or(a[h]=1) then kt:=false;while (n<>0)and(kt=true) dobeginif ktnt(n)=true then n:=n div 10else kt:=false;end;ktsnt:=kt;end;beginclrscr;assign(fo,'d:\snt.out');rewrite(fo);docdulieu;tach(n);if ktsnt(n)=true then writeln(fo,1)else writeln(fo,0);close(fo);end.thuynhuThánh codeTổng số bài gửi : 73Điểm thành tích : 18269Reputation : 1Join date : 03/01/2015Age : 24 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by thuynhu Mon Mar 02, 2015 11:55 am
thay oi xem gium em chuong trinh nay co sai loi nao nua khong a.thuynhuThánh codeTổng số bài gửi : 73Điểm thành tích : 18269Reputation : 1Join date : 03/01/2015Age : 24 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Admin Mon Mar 02, 2015 12:24 pm
thuynhu đã viết:sua bai 1:Code:program bai1;uses crt;var fi,fo:text;n,h:longint;a:array[1..10000]of integer;procedure docdulieu;beginassign(fi,'d:\snt.inp');reset(fi);readln(fi,n);close(fi);end;function ktnt(var x:longint):boolean;var kt:boolean;i:integer;begini:=2;kt:=true;while (i<x)and(kt=true) dobeginif x mod i = 0 then kt:=falseelse i:=i+1;end;ktnt:=kt;end;procedure tach(var n:longint);var t:longint;beginh:=0;t:=n;while t<>0 dobegininc(h);a[h]:=t mod 10;t:=t div 10;end;end;function ktsnt(var n:longint):boolean;var kt:boolean;t:longint;beginkt:=false;if (ktnt(n)=true)and(a[h]<>1) then kt:=trueelse if (ktnt(n)=false)or(a[h]=1) then kt:=false;while (n<>0)and(kt=true) dobeginif ktnt(n)=true then n:=n div 10else kt:=false;end;ktsnt:=kt;end;beginclrscr;assign(fo,'d:\snt.out');rewrite(fo);docdulieu;tach(n);if ktsnt(n)=true then writeln(fo,1)else writeln(fo,0);close(fo);end.bài này làm ngắn gọn như bạn Định thôi, chi mà phức tạp zữ vậy emAdminGiáo viênTổng số bài gửi : 192Điểm thành tích : 18489Reputation : -6Join date : 29/12/2014 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by thuynhu Mon Mar 02, 2015 12:35 pm
moi nguoi co mot y tuong khac nhau ma thay, dau co ai giong ai dau.thuynhuThánh codeTổng số bài gửi : 73Điểm thành tích : 18269Reputation : 1Join date : 03/01/2015Age : 24 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Admin Mon Mar 02, 2015 2:20 pm
thuynhu đã viết:moi nguoi co mot y tuong khac nhau ma thay, dau co ai giong ai dau.Đúng. Nhưng ý tưởng quá lòng vòng -> dẫn đến chương trình lòng thòng -> dễ dẫn đến kết quả đi tong (giống như điều đã xảy ra ở hôm kiểm tra) AdminGiáo viênTổng số bài gửi : 192Điểm thành tích : 18489Reputation : -6Join date : 29/12/2014 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by thuynhu Thu Mar 05, 2015 4:58 pm
nhung neu cu copy paste y tuong cua nguoi khac ma minh khong hieu thi khi lam lai bai do mnh cung se khong the lam duoc... thuynhuThánh codeTổng số bài gửi : 73Điểm thành tích : 18269Reputation : 1Join date : 03/01/2015Age : 24 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Admin Thu Mar 05, 2015 6:55 pm
suy nghĩ tí là hiểu thôi, dễ ồm à. lên tinh thần đi chứ, dạo này thấy có vẻ lơ là quá đó. cả tuần chẳng thấy code bài nào. hơi bị thất vọng đó.AdminGiáo viênTổng số bài gửi : 192Điểm thành tích : 18489Reputation : -6Join date : 29/12/2014 LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Thành Lợi Thu Mar 05, 2015 9:22 pm
Admin đã viết:suy nghĩ tí là hiểu thôi, dễ ồm à. lên tinh thần đi chứ, dạo này thấy có vẻ lơ là quá đó. cả tuần chẳng thấy code bài nào. hơi bị thất vọng đó.Em bó tay về bài chia kẹo rồi, mặc dù nắm được quy hoạch động nhưng nó đòi hỏi phải có công thức và logic Thành LợiChăm chỉTổng số bài gửi : 108Điểm thành tích : 18284Reputation : -35Join date : 03/01/2015Age : 24Đến từ : Việt Nam LikeDislike
Re: Bài 1: Số siêu nguyên tố (5 điểm)
by Sponsored content
Sponsored contentSimilar topics Similar topics» so sieu nguyen to» Tạo tệp có chứa các số nguyên tố» Kết quả điểm» Bài 2: Trò chơi với băng số (5 điểm) » Bài toán ô vuông (4 điểm) Bài kiểm tra cuối kỳ.
Tin học Tây Sơn :: Bài tập
Trang 1 trong tổng số 1 trangChuyển đến: Chọn Diễn Đàn||--Bài tập|--Tài liệu học tập|--Thử thách Permissions in this forum:Bạn không có quyền trả lời bài viết- Trang Chính
- Free forum | ©phpBB | Free forum support | Báo cáo lạm dụng | Thảo luận mới nhất
Từ khóa » Thuật Toán Tìm Số Siêu Nguyên Tố Trong Pascal
-
Bài Tập Về Số Nguyên Tố, Số Siêu Nguyên Tố, Số Nguyên Tố Tương ...
-
Chủ đề: Số Siêu Nguyên Tố - Diễn Đàn Tin Học
-
Viết Chương Trình Kiểm Tra Số Siêu Nguyên Tố Trong Pascal Và Xuất Ra ...
-
Số Siêu Nguyên Tố
-
Số Nguyên Tố Là Gì? Số Siêu Nguyên Tố Là Gì?
-
Số Siêu Nguyên Tố - Super Prime Number - Thầy Quách Văn Lượm
-
Số Siêu Nguyên Tố Và Thuật Toán Trong Pascal - YouTube
-
Thuật Toán Tối ưu: Số Siêu Nguyên Tố | VFO.VN
-
Lập Trình đơn Giản - Hoc24
-
NAAP18 Viết Chương Trình Nhập Vào Một... - Nỗi ám ảnh Pascal
-
Kiểm Tra Xem Số N Có Phải Số SIÊU Nguyên Tố Trong C - Dạy Nhau Học
-
Chương Trình Tìm Số Siêu Nguyên Tố Bị Sai - Programming
-
Số Siêu Nguyên Tố Là Số - MTrend