Bài tập về số hoàn hảo, số chính phương. - Bài Tập Pascal Tổng Hợp

Bài tập về số hoàn hảo, số chính phương.

Bài 1. Số hoàn hảo (Năm 11-12)
Trong một buổi học toán Bờm được học khái niệm về số có tính chất đặc biệt. Số hoàn hảo là số có tổng các ước trừ nó ra thì bằng chính nó. Ví dụ: Số 6 là số hoàn hảo vì nó có tổng các ước 1 + 2 + 3 = 6, số 8 không phải là số hoàn hảo vì 1 + 2 + 4 = 7 ≠8.
Yêu cầu: Cho dãy số a1, a2,... an. Hãy giúp Bờm đếm xem trong dãy có bao nhiêu số có tổng các chữ số là số hoàn hảo.
Dữ liệu vào: Từ file BAI2.INP gồm:
- Dòng đầu tiên là số nguyên dương n (n ≤ 100).
- n dòng tiếp theo ghi n số nguyên a
1, a2,... an (0 ≤ ai ≤109).
Kết quả: Ghi ra file BAI2.OUT gồm: Một dòng duy nhất là kết quả của bài toán
program sohoanhao;
uses crt;
var N,i,dem:longint;
a:array[1..100] of longint;
f1,f2:text;
function sohoanhao(n:longint):boolean;
var S,i:longint;
shh:boolean;
Begin
S:=0;shh:=true;
for i:=1 to n-1 do if n mod i = 0 then S:=S+i;
if n<>S then shh:=false;
sohoanhao:=shh;
End;
{----------------------------------------------------}
BEGIN
assign(f1,'sohoanhao.inp');reset(f1);
assign(f2,'sohoanhao.out');rewrite(f2);
readln(f1,N); dem:=0;
for i:=1 to N do
Begin
readln(f1,a[i]);
if sohoanhao(a[i]) then inc(dem);
End;
write(f2,dem);
close(f1);close(f2);

END.
Bài 2. Số chính phương (Năm 09-10)
Số chính phương là số có thể triển khai thành bình phương của một số khác.
Ví dụ: 9, 16 là các số chính phương vì 9 = 32 ; 16 = 42 .
Tính tổng các số chính phương trong dãy số tự nhiên liên tiếp 1, 2, 3, ..., N (N <= 30000).
Dữ liệu vào: Từ file văn bản bai1.inp: chứa một số tự nhiên n.
Kết quả: Ghi ra file văn bản bai1.out: Chứa một số là tổng của các số chính phương.
Ví dụ:
bai1.inp   bai1.out
10 14
chương trình:

uses crt;
var n,i,s:longint;
f1,f2:text;
FUNCTION chinhphuong(n:longint):boolean;
var cp:boolean;
i:longint;
Begin
cp:=false;
for i:=1 to n do if (n div i = i) and (n mod i = 0) then cp:=true;
chinhphuong:=cp;
End;
{-----------------------------------------------------------------------}
Begin
assign(f1,'chinhphuong.inp');reset(f1);
assign(f2,'chinhphuong.out');rewrite(f2);
s:=0;
readln(f1,n);
for i:=1 to n do if chinhphuong(i) then s:=s+i;
write(f2,s);
close(f1);close(f2);

END.
Previous
Next Post »

2 nhận xét

Write nhận xét
Unknown
AUTHOR
lúc 15:59 27 tháng 4, 2018 delete

Cũng đc bạn ạ. Cố gắng phát huy.

Reply
avatar