Trang 1 / 3 123 LastLast
Hiển thị kết quả từ 1 đến 10 / 22
  1. #1
    Tham gia
    29-04-2007
    Bài viết
    25
    Like
    0
    Thanked 0 Times in 0 Posts

    Một số bài tập PASCAL

    1.Nhập 1 số tự nhiên n.Liệt kê các số nguyên tố nhỏ hơn n.
    VD: n=13
    Các số nguyên tố nhỏ hơn n: 2 ,3 ,5 , 7, 11
    2.Cho 2 số tư nhiên n,m.Tính tổng và tích m chữ số cuối cùng của n.

    Em mới học Pascal nên mấy bài này kô bít làm ra sao.Mong anh (chị) giúp đỡ.
    Có thể nêu rõ thuật toán cũng được.
    Thanks a lot.........
    Quote Quote

  2. #2
    Tham gia
    02-11-2007
    Location
    Thiên Đường Nhiều Gái Xjnh
    Bài viết
    111
    Like
    0
    Thanked 3 Times in 2 Posts
    for i:=1 to n do
    begin
    ok:=true;
    for j:=2 to (sqrt(n) div 1) do if (n mod j =0) then ok:=false;
    if ok then Write(i,' ',);
    end;

  3. #3
    Tham gia
    29-04-2007
    Bài viết
    25
    Like
    0
    Thanked 0 Times in 0 Posts
    Cảm ơn bạn đã giúp!
    B1:
    uses crt;
    var n,x,i:word;
    ok:boolean;
    begin
    write('nhap n: ');readln(n);
    write( 'SNT nho hon ', n ,' la:');
    ok:=true;
    for x:=2 to n-1 do
    for i:=2 to x-1 do
    if x mod i=0 then begin ok:=False;break;end;
    for x:=2 to n-1 do
    write(x, ' ');
    readln
    end.

    Bài trên mình đã test thử nhưng chỉ đúng với 3 va 4 còn lại từ 5 trở đi thì máy kô viết ra màn hình nữa.Ai có thể giúp mình với.Thanks

  4. #4
    Tham gia
    12-01-2008
    Bài viết
    13
    Like
    0
    Thanked 0 Times in 0 Posts
    mình viết bài của bạn vào và thử rôi f,vẫn ok ngon lành ,những ở cái bài bạn text này ,bạn sai một số chỗ như sau:
    1 write(cuối bài ) đổi thành writeln;
    2 readln thiếu chấm phẩy
    chỉ có thể thôi ,bạn thử xme lại xem, đúng hết rồi mà

  5. #5
    Tham gia
    31-01-2008
    Location
    NewYork
    Bài viết
    32
    Like
    0
    Thanked 1 Time in 1 Post
    Quote Được gửi bởi whatsthecomputer View Post
    1 write(cuối bài ) đổi thành writeln;
    2 readln thiếu chấm phẩy
    Hai lỗi này mình thấy sửa hay ko sửa cũng ko sao , nó ko ảnh hưởng gì đến ct cả,readln ở cuối có " ; " hay ko thì cũng ko sao, còn write với writeln thì chỉ khác ở chỗ là writeln thực hiện xong lệnh rồi tự động xuống duóng tiếp theo, cón write thì ko xuống dòng. Mình thấy 2 lỗi này nó cũng ko ảnh hưởng gì đến ct gì.
    CÓ GÌ SAI SÓT MONG CÁC BẠN THÔNG CẢM^^!!

    [=========> Bổ sung bài viết <=========]

    Quote Được gửi bởi 9xnewmember View Post
    1.Nhập 1 số tự nhiên n.Liệt kê các số nguyên tố nhỏ hơn n.
    VD: n=13
    Các số nguyên tố nhỏ hơn n: 2 ,3 ,5 , 7, 11
    Bài 1 mình làm thế này :
    Code:
    Program bt;
     Var i,n,j : integer;
    Begin
     Write ('Nhap n:');Readln(n);
     Write ('Cac so nguyen to nho hon ',n,' la:');
     For i:=2 to n-1 do
      Begin
       j:=2;
       While i mod j <>0 then
        j:=j+1;
       if i=j then
        write (i,',');
      end;
     readln;
    End.
    CÓ GÌ SAI SÓT MONG CÁC BẠN THÔNG CẢM NHÉ !
    Được sửa bởi Jackychanh lúc 14:34 ngày 25-03-2008 Reason: Bổ sung bài viết

  6. #6
    Tham gia
    25-03-2008
    Bài viết
    27
    Like
    0
    Thanked 0 Times in 0 Posts
    Bài 1 của bạn mình là như sau:

    Program bai1;
    var n:longint;
    {------------------------------}
    Function ngto(n:longint):boolean;
    var i:word;
    begin
    ngto:=false;
    for i:=2 to trunc(sqrt(n)) do
    if n mod i=0 then exit;
    ngto:=true;
    end;
    {------------------------------}
    begin
    write('nhap n: ');
    readln(n);
    for i:=2 to n do
    if ngto(i) then write(i,' ');
    readln;
    end.


    Bài 2

    Program bai2;
    var i,tong,tich,n,m:longint;
    begin
    write('nhap so n,m: ');
    readln(n,m);
    tong:=0; tich:=1;
    for i:=1 to m do
    begin
    tong:=tong+(n mod 10);
    tich:=tich*(n mod 10);
    n:=n div 10;
    end;
    writeln('tong la: ',tong);
    writeln('tich la: ',tich);
    readln;
    end.

  7. #7
    Tham gia
    29-04-2007
    Bài viết
    25
    Like
    0
    Thanked 0 Times in 0 Posts
    Mình đã test bài của bạn, Bài của bạn đúng nhưng mình chưa hiểu chỗ sau:
    Quote Được gửi bởi PKMinh View Post
    for i:=2 to trunc(sqrt(n)) do
    if n mod i=0 then exit;
    Bạn có thể giải thích cho mình chỗ đó được không.Thanks

    [=========> Bổ sung bài viết <=========]

    Bài của bạn JackyChanh mình cũng đã test thử.Cảm ơn bạn....
    Được sửa bởi 9xnewmember lúc 19:44 ngày 25-03-2008 Reason: Bổ sung bài viết

  8. #8
    Tham gia
    25-03-2008
    Bài viết
    27
    Like
    0
    Thanked 0 Times in 0 Posts
    Function ngto(n:longint):boolean;
    var i:word;
    begin
    ngto:=false;
    for i:=2 to trunc(sqrt(n)) do
    if n mod i=0 then exit;
    ngto:=true;
    end;

    Đây là hàm dùng để kiểm tra n có phải là 1 số nguyên tố không. Giải thuật của mình là cho i chạy từ 2 đến phần nguyên của căn bậc hai của n. Giả sử khi phân tích ra thừa số nguyên tố thì n=i1*i2
    Nếu i1<i2 thì chạy đến i1 sẽ thiếu vì lỡ n sẽ chia chẵn cho các số lớn hơn i1 và bé hơn i2
    Nếu i1>i2 thì chạy đến i1 sẽ dư
    Nếu i1=i2 thì chạy đến i1 sẽ đủ.
    Khi i1=i2 thì i1=i2=sqrt(n) tức là bằng căn bậc hai của n. Mà căn bậc 2 của n được tính theo dạng real nên mình thêm hàm trunc(a:real):integer để lấy phần nguyên để chạy được vòng lặp for thôi.
    Sau đó mình cho i chạy lần lượt cho đến khi nào n chia hết cho i thì thoát ra khỏi chương trình con. Lúc đó hàm ngto sẽ có giá trị false do mình gán ở đầu chương trình. Còn nếu chạy hết vòng lặp for mà n vẫn không chia hết cho i thì ham ngto sẽ có giá trị true.
    Bạn còn không hiểu phần nào mình sẽ giải thích tiếp cho.

  9. #9
    Tham gia
    29-04-2007
    Bài viết
    25
    Like
    0
    Thanked 0 Times in 0 Posts
    Mình hiểu rồi!!!.Thanks

  10. #10
    Tham gia
    27-04-2008
    Bài viết
    1
    Like
    0
    Thanked 1 Time in 1 Post
    Bài 1 mình sửa lại từ jackychanh :
    Program bt;
    Var i,n,j : integer;
    Begin
    Write ('Nhap n:');Readln(n);
    Write ('Cac so nguyen to nho hon ',n,' la:');
    For i:=2 to n-1 do
    Begin
    j:=2;
    While i mod j <>0 do
    j:=j+1;
    if i=j then
    write (i,',');
    end;
    readln;
    End.
    chỉ thay "then" thành "do" là ok

  11. Thành viên Like bài viết này:


Trang 1 / 3 123 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •