Cần gấp viết thuật toán kiểm tra xem một số có phải là số siêu nguyên tố hay không?? 20 điểm nhé.. cần gấp nhiwf mọi người giúp ạ thanks

2 câu trả lời

* Chương trình con:

- Tạo hàm isPrimeNumber:

   + Nếu a<2 thì thoát với giá trị false

   + Cho i chạy từ 2 đến căn n, nếu n chia hết cho i thì thoát với giá trị false

   + Thoát với giá trị true

- Tạo hàm isSpecialPrime:

   + Lặp đến khi n=0

   + Nếu isPrimeNumber=false thì exit(false)

   + Cho n giảm đi 10 lần

   + Thoát với giá trị true

* Chương trình chính:

- Nhập n

- Nếu isSpecialPrime(n)=true thì in ra true ngược lại in ra false

//Hàm ngto

Bước 1: Nếu n<2 thì exit(false)

Bước 2:i ← 2 to trunc(sqrt(n))

Nếu n mod i = 0 thì exit(false)

Bước 3: exit(true)

//Hàm siêu ngto

Bước 1: Trong khi ngto(n) thì n ← n div 10

Bước 2: Nếu n = 0 thì exit(true);

exit(false);

//Chương trình chính

Bước 1: Nhập n

Bước 2: Nếu sngto(n) thì xuất phải

Ngược lại xuất không phải

---

Chương trình hoàn chỉnh:

Program BTT;
Uses crt;
Var a: longint;

Function ngto(a: longint): boolean;
Var i: longint;
Begin
        If a<2 then exit(false);
        For i:=2 to trunc(sqrt(a)) do
                If a mod i = 0 then exit(false);
        exit(true);
End;

Function sngto(n: longint): boolean;
Begin
        While ngto(n) do
                n:=n div 10;
        If n = 0 then exit(true)
        Else exit(false);
End;

Begin
        Clrscr;
        Write('Nhap a: '); Readln(a);
        If sngto(a) then Write('SNGTO')
        Else Write('Khong phai SNGTO');
        Readln
End.

Câu hỏi trong lớp Xem thêm