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.