31/7/13

Kiểm tra tính nguyên tố (tiếng Anh: primality test) là bài toán kiểm tra xem một số tự nhiên n có phải là số nguyên tố hay không.
Yêu cầu: Nhập vào một số tự nhiên n. Xác định xem số đó có phải số nguyên tố hay không.
Phương pháp đơn giản nhất để kiểm tra một số n có là số nguyên tố không là kiểm tra xem nó có chia hết cho các số m nằm trong khoảng 2 đến n1 hay không. Nếu n chia hết cho một số m nào đó thì n là hợp số (composite), ngược lại n là số nguyên tố.
Thực ra việc kiểm tra với m từ 2 đến n1 là không cần thiết, mà chỉ cần kiểm tra đến (n). Đó là vì nếu n là hợp số thì nó chắc chắn có ước số không vượt quá (n).

Thuật toán:  
  1.  Nhập số n;
  2. Cho i chạy từ 2 đến phần nguyên của (n).; Kiểm tra xem n có chia hết cho i hay không;
  3. Nếu n chia hết cho i trong lần lặp nào đó, dừng thuật toán, kết luận n là hợp số;
    Nếu n không chia hết cho i trong tất cả các lần lặp, kết luận n là số nguyên tố.
Lập trình với Scilab:

disp("+---+---+---+---+---+---+---+---+---+---+---+")
disp("     KIỂM TRA SỐ NGUYÊN TỐ")
disp("                             ")
//
clear
n=input("Nhập số cần kiểm tra tính nguyên tố: ")

// Hàm kiểm tra tính chia hết của hai số
function ch=kiemtra(x, y)
    d=floor(x/y)*y-x
    if d==0 then ch=1       // ch=1 là x chia hết cho y
        else ch=0           // ch=0 là không chia hết
    end
endfunction

// Kiểm tra tính nguyên tố
function kt=prem(q)
    m=floor(sqrt(q))
    kt=1                            // kt=1 tức q là số nguyên tố
    for i=2:m
        if kiemtra(q,i)==1 then 
            kt=0                    // kt=0 tức q KHÔNG nguyên tố
            break
    end
    end
endfunction

// Hiển thị kết quả
if prem(n)==1 then disp(" Số vừa nhập là số nguyên tố.") 
    else disp(" Số vừa nhập KHÔNG là số nguyên tố.") 
end

Các bài liên quan



1 nhận xét: