[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn Chắc suất Đại học top - Giữ chỗ ngay!!ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.Mã: PROGRAM bai5;
uses crt;
var a,i,d,tong:integer;
BEGIN
clrscr;
repeat
write('Nhap vao so a = '); readln(a);
until (a>999) and (a<10000);
if odd(a)=true then writeln('a la so le')
else writeln('a la so chan');
if a<2 then writeln('a khong phai la so nguyen to')
else
begin
d:=0;
for i:=2 to a div 2 do
if a mod i=0 then d:=d+1;
if d=0 then writeln('a la so nguyen to')
else writeln('a khong phai la so nguyen to');
end;
tong:=0;
[COLOR="Red"]for i:=1 to a-1 do[/COLOR]
if a mod i=0 then tong:=tong+1;
if tong=a then writeln(a,' la so hoan hao')
else writeln(a,' khong la so hoan hao');
readln;
END. đây là code bài tìm tổng số số hoàn hảo có 4 chữ số của m, nhưng tại sao cô m bảo ở vòng lặp for phải là for i:=1 to n div 2 to ?Nó có ảnh hưởng gì đến việc tính tổng các ước không?
Chú ý cho code vào tag code Đã sửa Số hồn hảo. Số hồn thiện (hay cịn gọi là số hoàn chỉnh, số hoàn hảo hoặc số hoàn thành) là một số nguyên dương mà tổng các ước nguyên dương của nó (số ngun dương chia hết cho nó) bằng chính nó. Ví dụ: Số 6 có ước nhỏ hơn nó là 1,2,3. Tổng là 1+2+3=6 vậy 6 là số hh. Số 8 chia hết cho 1, 2, 4 tổng 1+2+4=7 → 8 không phải là số hh. Số 28 chia hết cho 1, 2,4, 7, 14 tổng 1+2+4+7+14=28 → 28 là số hh. 1. Nhập vào số nguyên n, kiểm tra n có phải là số hồn hảo khơng? Nhận xét: số hồn hảo là số có tổng các ước thực sự bằng chính nó. - Để kiểm tra n có phải là số hồn hảo khơng? Ta sẽ tìm ước thực sự của n rồi cộng các ước thực sự lại, nếu tổng các ước thực sự bằng n thì n là số hồn hảo. b. Chương trình tham khảo: Program sohoanhao; Var i,n,tong:longint; Begin Readln (n); Tong:= 0; For i:=1 to n-1 do If n mod i = 0 then tong:=tong+i; If tong=n then write (n, ‘la so hoan hao’); Readln; End. Viết chương trình nhập vào một số n từ bàn phím thơng báo ra màn hình số đó có phải là số hồn hảo hay khơng (u cầu dùng hàm). 1 2 PROGRAM SoHoanHao; 3 USES CRT; 4 VAR n:INTEGER; 5 FUNCTION KiemTra(x:INTEGER):BOOLEAN; 6 7 VAR tam,i:INTEGER; BEGIN 8 tam:=0; 9 FOR i:= 1 TO (x DIV 2) DO 10 IF x MOD i = 0 THEN tam:=tam+i; 11 IF tam = x THEN KiemTra:=TRUE 12 Else KiemTra:=False; 13 END; 14 BEGIN 15 Clrscr; 16 Write('Nhap so can kiem tra ');Readln(n); 17 IF KiemTra(n) THEN 18 19 20 21 22 Writeln('So ',n,' la so hoan hao') ELSE Writeln('So ',n,' khong phai la so hoan hao'); Readln; END. 23 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ố hồ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 a1, 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 Cho số nguyên n, kiểm tra n có phải là số chính phương khơng? Ý tưởng: Dựa trên định nghĩa số chính phương: là bình phương của một số tự nhiên. Ta có: = 0.0, 0 , , , , Nhận xét: Số chính phương là số có phần thập phân của căn bậc 2 là 0. Như vậy, để viết chương trình ta sử dụng hàm sqrt() để lấy căn bậc 2, hàm frac () để lấy phần thập phân. Chương trình tham khảo: Program CP; Var n:longint; Begin Write (‘nhap n:’); Readln (n); If (frac(sqrt(n))=0) and (n>=0) then write (n, ‘la so CP’) else write (n, ‘ko la so CP’); Readldn End. In ra số chính phương nhỏ hơn 100. Ý tưởng: Để kiểm tra lần lượt các số chính phương nhỏ hơn 100 thì ta sẽ kiểm tra lần lượt các số từ 0 đến 99 có phải là số chính phương khơng, bằng câu lệnh for … to … do Chương trình tham khảo: Program CP; Var i:longint; Begin For i:=0 to 99 do If frac(sqrt(i))=0 then write (i,’ ‘); Readldn End. 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. uses crt; type ArrInt = array[1..250] of integer; Var n,i,x : integer; a: ArrInt; BEGIN clrscr; write('Nhap so phan tu: '); readln(n); for i:=1 to n do begin write('Phan tu thu ',i,'= '); readln(a[i]); end; writeln('Cac so chinh phuong co trong mang:'); for i:=1 to n do begin x:=trunc(sqrt(a[i])); if sqr(x)=a[i] then write(a[i]:4); end; readln; END. Dãy Fibonacci là dãy vô hạn các số tự nhiên bắt đầu bằng hai phần tử 0 và 1 hoặc 1 và 1, các phần tử sau đó được thiết lập theo quy tắc mỗi phần tử luôn bằng tổng hai phần tử trước nó. Hướng dẫn lập trình Pascal: Viết chương trình tính các số Fibonacci Tính các số Fibonacci: - F1=F2 = 1 - Fn = Fn-1 + Fn-2 Program FIBONACII; Uses Crt; Var n,kq:integer; Function F(n:integer):integer; Begin If (n=1) or (n=2) then F:=1 Else F:=F(n-1)+F(n-2); End; Begin Clrscr; Writeln(' TINH SO FIBONACII:'); Writeln('-------------------------------'); Write('Nhap n = '); Readln(n); Write('F(',n,')= ',f(n)); Readln; End. BT: Viết chương trình nhập vào 1 dãy số nguyên a gồm n phần tử. Chèn số k vào vị trí đầu dãy. Ý tưởng: Lấy ví dụ: 2 3 4 5 6 7 => 9 2 3 4 5 6 7 Đưa các phần tử trong mảng a lui về sau 1 đơn vị, sau đó chèn số k vào vị trí đầu tiên của dãy. In kết quả. Chương trình tham khảo: Var a:array[1..50] of longint; I,n,k: longint; Begin Read (n);read (k); For i:=1 to n do read (a[i]); For i:=n+1 downto 2 do A[i]:=a[i-1]; A[1]:=k; For i:=1 to n+1 do Write (a[i], ‘ ‘); Readln; Readln; End. BT: Viết chương trình nhập vào 1 dãy số nguyên a gồm n phần tử. Chèn số k vào vị trí cuối cùng của dãy. Lấy ví dụ: 2 3 4 5 6 7 => 2 3 4 5 6 7 9 Giữ nguyên các phần tử của dãy, sau đó chèn số k vào vị trí cuối cùng của dãy. In kết quả. Chương trình tham khảo: Var a:array[1..50] of longint; I,n: longint; Begin Read (n); read (k); For i:=1 to n do read (a[i]); For i:=1 to n+1 do a[n+1]:=k; For i:=1 to n+1 do write (a[i], ‘ ‘); Readln; Readln; End. BT: Viết chương trình nhập vào 1 dãy số nguyên a gồm n phần tử. kiểm tra số k, nếu số k là số chính phương thì chèn số k vào vị trí đầu dãy, ngược lại thì chèn vào cuối dãy. Ý tưởng: Lấy ví dụ: 3 3 4 5 6 7 => 9 2 3 4 5 6 7 4 6 3 7 8 1 => 4 6 3 7 8 1 5 BT: Kiểm tra số k có phải là số chính phương khơng, nếu số k là số chính phương thì chèn số k vào vị trí đầu dãy, ngược lại thì chèn vào cuối dãy. In kết quả. Chương trình tham khảo: Var a:array[1..50] of longint; I,n,k: longint; Begin Read (n);read (k); For i:=1 to n do read (a[i]); If frac(sqrt(k)) = 0 then begin For i:=n+1 downto 2 do A[i]:=a[i-1]; A[1]:=k; End; If frac(sqrt(k)) <> 0 then begin For i:=1 to n+1 do A[n+1]:=k; End; For i:=1 to n+1 do Write (a[i], ‘ ‘); Readln; Readln; End. BT: Viết chương trình nhập vào 1 dãy số nguyên a gồm n phần tử. Sắp xếp mảng theo thứ tự chẵn 1 hàng, lẻ 1 hàng. Ý tưởng: Lấy ví dụ: 2 3 4 5 6 7 => 2 4 6 357 1 1 1 1 1 1 => 1 1 1 1 1 1 2 2 2 2 2 2 => 2 2 2 2 2 2 3 3 3 3 4 5 => 3 3 3 3 5 4 Nhập vào các phần tử của mảng. Kiểm tra lần lượt các phần tử của mảng. nếu là phần tử chẵn thì in ra. Sau đó xuống dịng, trở về vị trí ban đầu, kiểm tra lần lượt các phần tử của mảng, nếu phần tử là số lẻ thì in ra. Chương trình tham khảo: Var a:array [1..50] of longint; I,n:longint; Begin Read (n); For i:=1 to n do Read (a[i]); For i:=1 to n do If a[i] mod 2 = 0 then write (a[i],’ ‘); writeln; For i:=1 to n do If i mod 2 <> then write (a[i],’ ‘); Readln. End. |