Trang chủ Tin Học Lớp 8 viết chương trình nhập vào số nguyên kiểm tra xem có phải số nguyên tố , số hoàn hảo, số...
Câu hỏi :

viết chương trình nhập vào số nguyên kiểm tra xem có phải số nguyên tố , số hoàn hảo, số chính phương không

Lời giải 1 :

uses crt;
var n:longint;

function ngto(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 hh(n:longint):boolean;
var s,i:longint;
begin
s:=0;
for i:=1 to trunc(sqrt(n)) do
 if n mod i=0 then
 begin
  s:=s+i;
  if i*i<>n then
   s:=s+n div i;
 end;
exit(s-n=n);
end;

begin
clrscr;
readln(n);
writeln('so nguyen to:',ngto(n));
writeln('so hoan hao:',hh(n));
writeln('so ching phuong:',trunc(sqrt(n))=sqrt(n));
readln
end.

Lời giải 2 :

`@`Số nguyên tố : có ước chỉ `1` và chính nó

- Mọi số nguyên tố `n` luôn tồn tại ước tại `<=sqrt(n)` của nó

- Suy ra, để xét số nguyên tố, ta đếm xem từ `2 to sqrt(n)` xem có số nào chia hết cho `n` hay không

- Dùng 1 biến phụ được gán giá trị ban đầu là 0

- Chạy từ `2` đến `sqrt(n)` để kiểm tra

- Tại sao chạy từ `2` đến `sqrtn` : để chương trình tối ưu

`@` Số hoàn hảo : là các số có tổng các ước thực sự (tức không kể chính nó) bằng chính nó

- Một số VD dễ hiểu với các số hoàn hảo

`6=1+2+3`

`28=1+2+4+7+14`

. . . 

- Nhìn qua tổng, ta nhận xét ước số thực của nó tồn tại ở khoản từ `1` đến `n/2`

- Ta chạy vòng lặp từ `1` đến `n/2`, xét nếu `n \vdots i` (n chia hết cho i - i là biến lặp) thì cộng vào tổng

- Xét : nếu `s=n` thì đó là số chính phương

`@` Số chính phương : là số có căn bậc hai của nó là số tự nhiên

- Xét 1 vài số từ `1` đến `10`

+ 4 là số chính phương, vì `sqrt4=2`

+ 5 không là số chính phương, vì `sqrt5~~2,23`

⇒ Hoặc ta có 1 hướng suy luận khác là làm tròn số đó, sau đó bình phương lên

⇒ Vậy `(\text{trunc(sqrt(}n)))^2=\text{n}^2`

⇒ Hàm trunc(n) dùng để làm tròn kết quả 

*Chương trình Pascal :

  uses crt;
    var n, d, s, i : integer ;
begin
    clrscr;
    write('Nhap so nguyen n: '); readln(n);
    d := 0 ;
    
    // so nguyen to
    for i := 2 to trunc(sqrt(n)) do 
        if n mod i = 0 then d := d + 1 ;
    if d <> 0 then writeln(n,' khong la so nguyen to')
        else writeln(n, 'la so nguyen to');
        
    // so hoan hao
    s := 0 ;
    for i := 1 to trunc(n/2) do 
        if n mod i = 0 then s := s + i ;
    if s = n then writeln(n,' la so hoan hao')
        else writeln(n,' khong la so hoan hao');
    
    // so chinh phuong
    if trunc(sqrt(n)) = sqrt(n)  then writeln(n,' la so chinh phuong')
        else writeln(n,' khong la so chinh phuong');
    readln ;
    
end .

Bạn có biết?

Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!

Nguồn :

Wikipedia - Bách khoa toàn thư

Tâm sự lớp 8

Lớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần và sang năm lại là năm cuối cấp, áp lực lớn dần. Hãy chú ý đến sức khỏe, cân bằng giữa học và nghỉ ngơi để đạt hiệu quả tốt nhất!

Nguồn :

sưu tập

Copyright © 2024 Giai BT SGK