Câu hỏi:
Giúp em bài tập về nhà Tổng hợp lớp 11 câu hỏi như sau: Chỉ cần viết hàm kiểm tra số siêu nguyên tố
Viết chương trình càng tốt
Trả lời 2:
Gia Sư Hoàng Khang gữi câu trả lời dành cho bạn:
program sieu_nguyen_to;
var n:integer;
{—Ham-nguyen-to—}
function ktnt(k:integer):boolean;
var e:integer;
begin
ktnt:=false;
if k<2 then exit;
for e:=2 to trunc(sqrt(k)) do
if k mod e=0 then exit;
ktnt:=true;
end;
{—Ham-sieu-nguyen-to—}
function ktsnt(x:integer):boolean;
begin
ktsnt:=false;
while x>0 do
begin
if ktnt(x)=false then exit;
x:=x div 10;
end;
ktsnt:=true;
end;
{—Chuong-trinh-chinh—}
BEGIN
clrscr;
write(‘Nhap so can kiem tra: ‘); readln(n);
if ktsnt(n) then write(‘Yes’) else write(‘No’);
readln;
end.
Trả lời 1:
Gia Sư Hoàng Khang gữi câu trả lời dành cho bạn:
Pascal:
uses crt;
var n:longint;
function isPrimeNumber(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 isSpecialPrime(n:longint):boolean;
begin
while n<>0 do
begin
if isPrimeNumber(n)=false then exit(false);
n:=n div 10;
end;
exit(true);
end;
begin
clrscr;
readln(n);
if isSpecialPrime(n) then write(‘true’) else write(‘false’);
readln
end.
C++:
#include<bits/stdc++.h>
using namespace std;
bool isPrimeNumber(int a) {
if (a<2)
return false;
for (int i=2;i<=sqrt(a);i++) {
if (a%i==0)
return false;
}
return true;
}
bool isSpecialPrime(int n) {
while (n!=0) {
if (isPrimeNumber(n)==false) {
return false;
}
n/=10;
}
return true;
}
int main() {
int n;
cin>>n;
if (isSpecialPrime(n)) {
cout<<“true”;
} else {
cout<<“false”;
}
}