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 ạ!!!
2 câu trả lời
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.
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.