Viết chương trình nhập vào số nguyên dương M. Kiểm tra M có phải là số nguyên tố không, số chính phương không, số hoàn hảo không?
Mong nhận được câu trả lời từ mn ạ!!!
Viết chương trình nhập vào số nguyên dương M. Kiểm tra M có phải là số nguyên tố không, số chính phương không, số hoàn hảo không?
Mong nhận được câu trả lời từ mn ạ!!!
uses crt;
var m:longint;
{—Ham-nguyen-to—}
function nt(m:longint):boolean;
var i:longint;
begin
i:=2;
if m<2 then exit(false);
while m mod i<>0 do inc(i);
if i=m then nt:=true else nt:=false;
end;
{—Ham-chinh-phuong—}
function cp(m:longint):boolean;
var a:longint;
begin
a:=trunc(sqrt(m));
if sqr(a)=m then cp:=true else cp:=false;
end;
{—Ham-hoan-hao—}
function hh(m:longint):boolean;
var i,s:longint;
begin
for i:=1 to m div 2 do
if m mod i=0 then inc(s,i);
if s=m then hh:=true else hh:=false;
end;
{—Chuong-trinh-chinh—}
begin
clrscr;
write(‘Nhap M: ‘); readln(m);
if nt(m) then writeln(m,’ la so nguyen to’)
else writeln(m,’ khong phai la so nguyen to’);
if cp(m) then writeln(m,’ la so chinh phuong’)
else writeln(m,’ khong phai la so chinh phuong’);
if hh(m) then writeln(m,’ la so hoan hao’)
else writeln(m,’ khong phai la so hoan hao’);
readln
end.
program kiemtra;
uses crt;
var M:integer;
function ktnt(k:integer):boolean;
var l:integer;
begin
ktnt:=false;
if k<2 then exit;
for l:=2 to trunc(sqrt(k)) do
if k mod l=0 then exit;
ktnt:=true;
end;
function ktcp(k:integer):boolean;
begin
if sqr(trunc(sqrt(k))=k then ktcp:=true
else ktcp:=false;
end;
function kthh(k:integer):boolean;
var l,t:integer;
begin
t:=0;
for l:=1 to k div 2 do
if k mod l=0 then t:=t+l;
if t=k then kthh:=true else kthh:=false;
end;
BEGIN
clrscr;
write(‘Nhap M: ‘); readln(m);
if ktnt(m) then writeln(m,’ la so nguyen to’)
else writeln(m,’ khong phai so nguyen to’);
if ktcp(m) then writeln(m,’ la so chinh phuong’)
else writeln(m,’ khong phai so chinh phuong’);
if kthh(m) then write(m,’ la so hoan hao’)
else write(m,’ khong phai so hoan hao’);
readln;
end.