Trang 4 / 5 FirstFirst 12345 LastLast
Hiển thị kết quả từ 31 đến 40 / 49
  1. #31
    Tham gia
    27-05-2008
    Location
    bình định
    Bài viết
    692
    Like
    0
    Thanked 10 Times in 6 Posts
    thật đơn giản , số dễ dàng nhận thấy các hợp số là bội của các số ngtố và nó chắc chắn phải > số ngtố là ược của nó , vì thế chtrình sẽ vẫn đảm bảo chia số nguyên tố nếu không làm 1 mảng lưu các số nguyên tố và kiểm tra từng số từ nhỏ đến lớn , ta cứ dùng lệnh inc là dược không cần kiểm tra ngtố đâu

    tòm lại mình ủng hộ anh f12

  2. #32
    Tham gia
    27-05-2008
    Location
    phu quoc
    Bài viết
    128
    Like
    0
    Thanked 13 Times in 5 Posts
    Hiện nay theo mình biết thì hàm kiểm tra số nguyên tố tối ưu nhất ( theo nghĩa cấp II) là
    Code:
    Function ngto(a:integer):boolean ;
         var
         begin
                  ngto:=false ;
                  if a<2 then exit ;
                  for i:=2 to trunc(Sqrt(a)) do
                       if a mod i = 0 then exit ;
                  ngto:=true ;
       end;
    chỉ dáo
    Được sửa bởi Mr.Bo_Aloha lúc 21:48 ngày 19-07-2008

  3. #33
    Tham gia
    29-06-2008
    Bài viết
    54
    Like
    0
    Thanked 0 Times in 0 Posts
    tui chả biết mấy câu lệnh phức tạp như ông Bo nhưng tôi lại thích viết theo kiểu thik gì viết nấy vì vậy theo tôi hàm nguyên tố nên như thế này:
    Code:
    function nt(n:integer):boolean;
    var
       i,d:integer;
    begin
         d:=1;
         for i:=1 to n do
             if n mod i=0 then
                d:=d+1;
             if d=2 then
                nt:=true
             else
                 nt:=false;
    end;
    chỉ dáo viết sai cố tình hay vô tình vậy

  4. #34
    Tham gia
    27-05-2008
    Location
    phu quoc
    Bài viết
    128
    Like
    0
    Thanked 13 Times in 5 Posts
    thì viết theo kiểu đó thì nhiều người có thể làm được nhưng tôi đang nói về thuật toán ngắn gọn!!

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

    chạy từ 1 đến n sẽ tôn thời gian hơn từ 2 ~ truc(sqrt(n)) đó
    Được sửa bởi Mr.Bo_Aloha lúc 21:51 ngày 19-07-2008 Reason: Bổ sung bài viết

  5. #35
    Tham gia
    27-05-2008
    Location
    bình định
    Bài viết
    692
    Like
    0
    Thanked 10 Times in 6 Posts

    Vui lắm !

    thấy vúi quá !!
    mình cũng đóng góp 1 cái :
    Code:
    function nt(a:integer):boolean;
    var i:byte;
     begin
      nt:=true
      for i:=1 to round(sqrt(a)) do
       if a mod i=0 then
        begin
         nt:=false;
         break
       end;
      end;
    và 1 cái nữa
    Code:
    function nt(a:integer):boolean;
    var i:integer;
     begin
     i:=2;
      while a mod i <>0 then
       i:=i+1;
     if i> round(sqrt(a)) then nt:-true 
                          else nt:=false;
     end;

  6. #36
    Tham gia
    27-05-2008
    Location
    phu quoc
    Bài viết
    128
    Like
    0
    Thanked 13 Times in 5 Posts
    Quote Được gửi bởi bld View Post
    thấy vúi quá !!
    mình cũng đóng góp 1 cái :
    Code:
    function nt(a:integer):boolean;
    var i:byte;
     begin
      nt:=true
      for i:=1 to round(sqrt(a)) do
       if a mod i=0 then
        begin
         nt:=false;
         break
       end;
      end;
    cái này bld chưa xét trường hợp a phải lớn hơn 2 à!
    vd: a=-5 khi đó chương trình sẽ báo nt=true!

  7. #37
    Tham gia
    25-09-2006
    Bài viết
    533
    Like
    0
    Thanked 1 Time in 1 Post

    Nói nhỏ nè !

    Quote Được gửi bởi Mr.Bo_Aloha View Post
    cái này bld chưa xét trường hợp a phải lớn hơn 2 à!
    vd: a=-5 khi đó chương trình sẽ báo nt=true!
    Lẽ nào lại báo True, ct sẽ báo lỗi, bằng lằn đỏ.............

  8. #38
    Tham gia
    18-02-2008
    Location
    PTC Sư Phạm
    Bài viết
    81
    Like
    0
    Thanked 2 Times in 1 Post
    Có một thuật toán O(logn^3) nếu mình nhớ ko nhầm,thuật toán Rabbin Miller,còn gọi là thuật toán xấp xỉ với độ sai lệch 1/4^k với k chọn trước

  9. #39
    Tham gia
    16-01-2008
    Bài viết
    271
    Like
    0
    Thanked 0 Times in 0 Posts
    Ec', anh conan nói thế. Em chịu

  10. #40
    Tham gia
    25-09-2006
    Bài viết
    533
    Like
    0
    Thanked 1 Time in 1 Post
    Quote Được gửi bởi bete View Post
    "lấy số đó chia cho các số nguyên từ 2 đên sqrt(số đó)" là 1 cách để kiểm tra coi 1 số có phải là số nguyên tố hay không

    Còn "lấy số đó chia cho các số nguyên tố từ 2 đên sqrt(số đó)" là 1 cách đúng để phân tích ra thừa số nguyên tố
    => bạn F12 nói không có sai đâu

    (chỉ khác nhau có 1 chữ "chia cho các số nguyên tố" và "chia cho các số nguyên" mà thôi)

    -thân
    éc, hôm nay rảnh lấy ra xem lại ...sao thấy sai béc à!?!?!
    em vd:
    n:=28; cần pt ra các TSNT;
    theo HD trên thì căn(28)=~ 6 (làm tròn)
    cho i chạy từ 2 ...6 viết i nếu n chia hết cho i (i là NT)
    --> ct sẽ viết 2 2
    vậy nên sẽ cho i chạy từ 2...(n div 2) thì cha71c ăn hơn nhỉ

Trang 4 / 5 FirstFirst 12345 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
  •