Bài 3: Viết chương trình từ bàn phím số nguyên dương n (n<=100) và dãy A gồm n phần tử số nguyên A1, A2……An. a/ Hãy đếm xem trong dãy có bao nhiêu số nguyên tố trong dãy? b/ Hãy tính tổng các số hoàn hảo có mặt trong dãy số? Yêu cầu: Viết chương trình con nhập dãy số A từ bàn phím.
Program Mang;
Uses crt;
Var A: array[1..100000] of longint;
n, cnt, sum, i: longint;
Function is_Prime(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 isHH(a: longint): boolean;
Var ans, i: longint;
Begin
ans := 0;
For i:=1 to a div 2 do
If a mod i = 0 then ans := ans + i;
If ans = a then exit(true);
exit(false);
End;
Begin
Clrscr;
Write(‘Nhap n: ‘); Readln(n);
cnt := 0;
sum := 0;
For i:=1 to n do
Begin
Write(‘A[‘,i,’] = ‘);
Readln(A[i]);
If is_Prime(A[i]) then inc(cnt);
If isHH(A[i]) then sum := sum + A[i];
End;
Writeln(‘Co ‘,cnt,’ so nguyen to’);
Write(‘Tong cac so hoan hao la ‘,sum);
Readln
End.
uses crt;
var n,i,count,res:longint;
a:array[1..100]of longint;
function isPrimeNumber(n:longint):boolean;
var i:longint;
begin
if n<2 then exit(false);
for i:=2 to trunc(sqrt(n)) do
if n mod i=0 then exit(false);
exit(true);
end;
function isPerfectNumber(n:longint):boolean;
var i,res:longint;
begin
res:=0;
for i:=1 to n div 2 do
if n mod i=0 then inc(res,i);
if res=n then exit(true) else exit(false);
end;
begin
clrscr;
readln(n);
for i:=1 to n do
begin
readln(a[i]);
if isPrimeNumber(a[i]) then inc(count);
if isPerfectNumber(a[i]) then inc(res,a[i]);
end;
writeln(count);
writeln(res);
readln;
end.
//Harry Le