Chương trình con kiểm tra 1 số có là số nguyên tố hay không


quảng cáo tại Diễn Đàn Tin Học
 

Hãy tìm kiếm trước khi HỎI hoặc ĐĂNG BÀI


Trang 1/2 12 CuốiCuối
kết quả từ 1 tới 10 trên 15
  1. #1
    Thành viên nhiệt tình
    Gia nhập
    Jun 2009
    Nơi cư ngụ
    Hà Nội
    Bài gởi
    305
    Bài viết Cám ơn / Thích
    Downloads V.I.P
    0
    Uploads
    0

    Chương trình con kiểm tra 1 số có là số nguyên tố hay không

    Các bạn hãy viết các cách để kiểm tra 1 số có là số nguyên tố hay không (dùng chương trình con.
    Trong nhiều sách mình thấy dùng hàm sau nhưng mình chạy với số 1 thì in ra là số nguyên tố. Các bạn đọc và cho ý kiến nhé
    Function ngto(N:integer):Boolean;
    Var i:integer;
    Begin
    ngto:=false;
    For i:=2 to trunc(sqrt(N)) do
    if N mod i = 0 then exit;
    ngto:=true;
    End;



    DMCA.com

    Chia sẻ bài viết



    Copy đoạn dưới và gửi cho bạn bè qua Yahoo!
    Link bài viết Diễn Đàn Tin Học by QRCode

  2. #2
    Thành viên nhiệt tình
    Gia nhập
    Jun 2009
    Nơi cư ngụ
    Hà Nội
    Bài gởi
    305
    Bài viết Cám ơn / Thích
    Downloads V.I.P
    0
    Uploads
    0
    Mình đã hiểu phải sửa lại chương trình trên như sau:
    [code]
    Function ngto(N:integer):boolean;
    Var i:integer;
    Begin
    ngto:=false;
    For i:=2 to trunc(sqrt(N) ) do
    if N mod i=0 then exit;
    ngto:=N>1;
    End;
    Mình đã hiểu vì sao đoạn CTC trên chạy lại cho kết quả 1 là số nguyên tố vì với N=1 ban đầu ngto:=false
    Sau đó thì vòng for không được thực hiện vì i chạy từ 2 đến... vì vậy không có lệnh Exit thoát khỏi chương trình con. Và cuối cùng hàm ngto lại gán bằng true ngto:=true. Vậy 1 sẽ là số nguyên tố.Cần sửa lại như trên

  3. #3
    Thành viên mới
    Gia nhập
    Jul 2009
    Nơi cư ngụ
    Bình Dương
    Bài gởi
    7
    Bài viết Cám ơn / Thích
    Downloads V.I.P
    0
    Uploads
    0
    Hay lắm, cái này mình cũng mới học, không hiểu vì sao hết

  4. #4
    Thành viên
    Gia nhập
    Jul 2009
    Nơi cư ngụ
    Hiệp Lực_Đồng Thịnh_Sông Lô_Vĩnh Phúc
    Bài gởi
    65
    Bài viết Cám ơn / Thích
    Downloads V.I.P
    0
    Uploads
    0
    c¸i ®Êy rë ch¹y c¸i nµy nµy
    function ktnt(i:integer):boolean;
    dem:=0;
    for j:=1 to i do
    if i mod j = 0 then inc(dem);
    if dem=2 then ktnt:=true else ktnt := false;
    end;

  5. #5
    Thành viên nhiệt tình Avatar của hang_vt
    Gia nhập
    Jun 2008
    Nơi cư ngụ
    Vũng Tàu
    Bài gởi
    373
    Bài viết Cám ơn / Thích
    Downloads V.I.P
    0
    Uploads
    0
    Trích dẫn Nguyên văn bởi lehang_gb1 Xem Bài Gởi
    Các bạn hãy viết các cách để kiểm tra 1 số có là số nguyên tố hay không (dùng chương trình con.
    Trong nhiều sách mình thấy dùng hàm sau nhưng mình chạy với số 1 thì in ra là số nguyên tố. Các bạn đọc và cho ý kiến nhé
    Function ngto(N:integer):Boolean;
    Var i:integer;
    Begin
    ngto:=false;
    For i:=2 to trunc(sqrt(N)) do
    if N mod i = 0 then exit;
    ngto:=true;
    End;
    thêm cái dk if n<2 then exit . Cái này đâu phải kĩ thuật lập trình .

  6. #6
    Người Đóng Góp Hàng Đầu Avatar của HappySoftGroup
    Gia nhập
    May 2008
    Nơi cư ngụ
    Tp. Cam Ranh - Khánh Hòa
    Bài gởi
    2,265
    Bài viết Cám ơn / Thích
    Downloads V.I.P
    2
    Uploads
    0
    Trích dẫn Nguyên văn bởi khanh tinh Xem Bài Gởi
    c¸i ®Êy rë ch¹y c¸i nµy nµy
    function ktnt(i:integer):boolean;
    dem:=0;
    for j:=1 to i do
    if i mod j = 0 then inc(dem);
    if dem=2 then ktnt:=true else ktnt := false;
    end;
    Đây là thuật toán cơ bản nhưng thuật toán này chạy lâu lắm.
    Với những số lớn thì thuật toán này không tối ưu.
    ...♥.♥.♥..:: Chúc Tất cả các bạn thành công ::..♥.♥.♥...
    ---------o0o---------
    Chúc bạn vui vẻ̉ khi đến với DIENDANTINHOC.VN
    ============>>><<<============

  7. #7
    Thành viên Avatar của SHINICHI-KID
    Gia nhập
    Jul 2009
    Nơi cư ngụ
    CĐV - Phú Tân - Cà Mau
    Bài gởi
    38
    Bài viết Cám ơn / Thích
    Downloads V.I.P
    0
    Uploads
    0
    Trích dẫn Nguyên văn bởi lehang_gb1 Xem Bài Gởi
    Mình đã hiểu phải sửa lại chương trình trên như sau:
    [code]
    Function ngto(N:integer):boolean;
    Var i:integer;
    Begin
    ngto:=false;
    For i:=2 to trunc(sqrt(N) ) do
    if N mod i=0 then exit;
    ngto:=N>1;
    End;
    Mình đã hiểu vì sao đoạn CTC trên chạy lại cho kết quả 1 là số nguyên tố vì với N=1 ban đầu ngto:=false
    Sau đó thì vòng for không được thực hiện vì i chạy từ 2 đến... vì vậy không có lệnh Exit thoát khỏi chương trình con. Và cuối cùng hàm ngto lại gán bằng true ngto:=true. Vậy 1 sẽ là số nguyên tố.Cần sửa lại như trên
    Hay lắm, tui thích nhất cái khoản ngto:=N>1; vừa gọn vừa dễ nhìn
    [MARQUEE]Siêu đạo chích 1412 - KID[/MARQUEE]
    Đọc xong thì nhớ 'CẢM ƠN' nếu không thì

  8. #8
    Thành viên nhiệt tình
    Gia nhập
    Jun 2009
    Nơi cư ngụ
    Hà Nội
    Bài gởi
    305
    Bài viết Cám ơn / Thích
    Downloads V.I.P
    0
    Uploads
    0
    Trích dẫn Nguyên văn bởi SHINICHI-KID Xem Bài Gởi
    Hay lắm, tui thích nhất cái khoản ngto:=N>1; vừa gọn vừa dễ nhìn
    Nhưng mà khó hiểu vì ngto nhận kiểu Boolean mà N lại là số.
    Ah biểu thức N>1 nghĩa là True với N > =2. ĐÚng rồi

  9. #9
    Thành viên nhiệt tình Avatar của Shiro
    Gia nhập
    Mar 2009
    Nơi cư ngụ
    Rạch Giá, Kiên Giang
    Bài gởi
    523
    Bài viết Cám ơn / Thích
    Downloads V.I.P
    0
    Uploads
    0

    Wink

    Mình đưa ra 1 đoạn chương trình, bạn tự viết vào mođun nha:
    i:=2;
    while a{số cần kt} mod i<>0 then inc(i);
    if a=i then true else false.

    Có gì sai sót xin chỉ bảo

  10. #10
    Thành viên Avatar của VietDuc_TK
    Gia nhập
    Sep 2009
    Nơi cư ngụ
    Tứ Kỳ
    Bài gởi
    63
    Bài viết Cám ơn / Thích
    Downloads V.I.P
    0
    Uploads
    0
    procedure KT(x:integer);
    var d,i:integer;
    begin
    d:=0;
    for i:=2 to x-1 do
    if x mod i=0 then d:=d+1;
    if d=0 then write(x,'la so nguyen to') else write(x,'k la so nguyen to');
    end;

Trang 1/2 12 CuốiCuối

Thông tin Chủ đề

Users Browsing this Thread

Hiện đang có 1 người đang đọc bài này. (0 thành viên và 1 khách)

Quyền Hạn Của Bạn

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •