Tin học Việt

Would you like to react to this message? Create an account in a few clicks or log in to continue.
Tin học Việt

A place for learning and sharing knowledge

Latest topics

» [Đề thi] Đề thi HSG cấp thành phố lớp 12 đợt 1 môn Tin các năm
by camchung Sun Jul 26, 2015 10:49 am

» [Bài tập] Các bài tập quy hoạch động cơ bản
by popperdk Tue Apr 28, 2015 2:17 am

» [Unix/Linux] Lecture 2 - File Transfer and Working with Commands
by Admin Tue Apr 07, 2015 9:35 pm

» [Unix/Linux] Lecture 1 - Basic Command
by Admin Tue Apr 07, 2015 8:44 pm

» [Unix/Linux] Introduction To Unix/Linux
by Admin Tue Apr 07, 2015 8:17 pm

» [Thuật toán] Loang trên ma trận
by zoutsec Sat Feb 28, 2015 4:26 pm

» Thảo luận về stack!
by ganar27 Sat Jun 14, 2014 4:21 pm

» [Bài tập] Bài tập về đường đi ngắn nhất
by sonlv1112 Fri Feb 07, 2014 9:37 pm

» [Game học hóa] Căn nhà phù thủy
by Admin Sun Jan 26, 2014 8:32 pm

» [Game] Căn nhà phù thủy
by Admin Sun Jan 26, 2014 8:31 pm


    [Thuật toán] Một số thuật toán cơ bản

    avatar
    Admin
    Admin
    Admin


    Posts : 48
    Golds : 2147483646
    Liked : 18
    Ngày tham gia : 2011-08-25
    Tuổi : 27
    Đến từ : Ho Chi Minh City

    [Thuật toán] Một số thuật toán cơ bản Empty [Thuật toán] Một số thuật toán cơ bản

    Post by Admin Tue Aug 30, 2011 5:06 pm

    THUẬT TOÁN KIỂM TRA SỐ NGUYÊN TỐ

    Thuật toán của ta dựa trên ý tưởng: nếu n >1 không chia hết cho số nguyên nào trong tất cả các số từ 2 đến thì n là số nguyên tố. Do đó ta sẽ kiểm tra tất cả các số nguyên từ 2 đến có round(sqrt(n)), nếu n không chia hết cho số nào trong đó thì n là số nguyên tố.
    Nếu thấy biểu thức round(sqrt(n)) khó viết thì ta có thể kiểm tra từ 2 đến n div 2.
    Hàm kiểm tra nguyên tố nhận vào một số nguyên n và trả lại kết quả là true (đúng) nếu n là nguyên tố và trả lại false nếu n không là số nguyên tố.

    Code:

    function ngto(n:integer):boolean;
    var i:integer;
    begin
        ngto:=false;
        if n<2 then exit;
        for i:=2 to trunc(sqrt(n)) do
            if n mod i=0 then exit; {nếu n chia hết cho i thì n không là nguyên tố => thoát luôn}
        ngto:=true;
    end;

    Chú ý: Dựa trên hàm kiểm tra nguyên tố, ta có thể tìm các số nguyên tố từ 1 đến n bằng cách cho i chạy từ 1 đến n và gọi hàm kiểm tra nguyên tố với từng giá trị i.


    THUẬT TOÁN TÍNH TỔNG CÁC CHỮ SỐ CỦA MỘT SỐ NGUYÊN


    Ý tưởng là ta chia số đó cho 10 lấy dư (mod) thì được chữ số hàng đơn vị, và lấy số đó div 10 thì sẽ được phần còn lại. Do đó sẽ chia liên tục cho đến khi không chia được nữa (số đó bằng 0), mỗi lần chia thì được một chữ số và ta cộng dồn chữ số đó vào tổng.
    Hàm tính tổng chữ số nhận vào 1 số nguyên n và trả lại kết quả là tổng các chữ số của nó:


    Code:

    function tongcs(n:integer): integer;
    var s : integer;
    begin
       s := 0;
       while n <> 0 do begin
          s := s + n mod 10;
          n := n div 10;
       end;
       tongcs := s;
    end;

    Chú ý: Tính tích các chữ số cũng tương tự, chỉ cần chú ý ban đầu gán s là 1 và thực hiện phép nhân s với n mod 10.


    THUẬT TOÁN TÍNH TỔNG CÁC ƯỚC SỐ CỦA MỘT SỐ NGUYÊN


    Để tính tổng các ước số của số n, ta cho i chạy từ 1 đến n div 2, nếu n chia hết cho số nào thì ta cộng số đó vào tổng. (Chú ý cách tính này chưa xét n cũng là ước số của n).

    Code:
    function tongus(n : integer): integer;
    var i,s : integer;
    begin
       s := 0;
       for i := 1 to n div 2 do
          if n mod i = 0 then s := s + i;
       tongus := s;
    end;

    Chú ý: Dựa trên thuật toán tính tổng ước số, ta có thể kiểm tra được 1 số nguyên có là số hoàn thiện không: số nguyên gọi là số hoàn thiện nếu nó bằng tổng các ước số của nó.

      Current date/time is Sat May 11, 2024 12:00 pm