Chương trình tìm số nguyên tố pascal

Function nt(x:integer):boolean;
Var i:integer;
Begin
  nt:=true;
For i:=2 to trunc(sqrt(x)) do
  if x mod i =0 then
     nt:=false;
End;


[=========> Bổ sung bài viết <=========]

Chương trình tìm số nguyên tố pascal
Được gửi bởi elnino_020993

còn có thể cải tiến được nữa đấy bạn ạh
vòng for làm cho i có thể là số chẵn,
mình đề nghị dùng vòng repeat .. until
chỉ phải ktra ban đầu với giá trị i=2;
sau đó i=3, qua mỗi vòng lặp thì inc(i,2);

Có thể qua mỗi vòng lặp tăng i lên 2 sẽ bớt thời gian thực hiện. Vì ko bao giờ có 2 số tự nhiên liên tiếp cùng là nguyên tố đúng ko bạn nhỉ

[=========> Bổ sung bài viết <=========]

Function nt(x:integer):boolean;
Var i:integer;
Begin
if (x=2) or (x=3) then nt:=true
else nt:=false;
i:=2
 repeat
    if x mod i then exit else inc(i,2);
 until i=trunc(sqrt(x));
nt:=N>1;
End;


[=========> Bổ sung bài viết <=========]

Cũng ko cần kiểm tra x=2 or x=3 vấn đúng.Kiẻm tra TH N=1;
Function nt(x:integer):boolean;

Var i:integer;
Begin
if x=1 then nt:=false;exit;

 nt:=false;
i:=2
 repeat
    if x mod i then exit else inc(i,2);
 until i=trunc(sqrt(x));
nt:=true;
End;

Bài 1: Nhập vào một số nguyên không âm, kiểm tra xem nó có phải là số nguyên tố hay không?

Program SO_NGUYEN_TO;
Uses crt;
Var i,n: integer;
Begin
Clrscr;
Writeln('KIEM TRA SO NGUYEN TO:');
Writeln('---------------------------');
Write ('Nhap so can kiem tra n = '); readln(n);
If (n=0) or (n=1) then
     Writeln(n,' Khong phai la so nguyen to')
     Else
    Begin
    i:=1;
    Repeat
       i:= i+1;
    Until (n mod i= 0) or (i*i>n);
    If i*i>n then Writeln (n,' la so nguyen to')
    Else Writeln (n,' khong phai la so nguyen to');
End;
Readln;
End.


Bài 2: In ra các số nguyên tố nhỏ hơn hoặc bằng N (N là số nguyên không âm được nhập từ bàn phím).

Program CAC_SO_NGUYEN_TO;
Uses crt;
Var n,i,t: integer;
Begin
Clrscr;
Writeln('IN RA CAC SO NGUYEN SO <=N');
Writeln('--------------------------');
Write('Nhap n = ');readln(n);
If n<2 then
     Writeln('Khong co so nguyen to nao <=',n)
Else
    Begin
      Writeln('Cac so nguyen to <= ',n,' la:');
      For i := 2 to n do
      Begin
       t:= 1;
      Repeat
         t:= t+1;
      Until ( i mod t = 0) or ( t*t>i ) ;
      If( t*t>i) then
      Write(i:4);
      End;
      Readln;
End.

Chào mọi người đã đến với vlog nhỏ của Trang

Như mọi người đã thấy thì hầu hết trên mạng nhưng chương trình pascal viết về phần số nguyên tố này hơi khó hiểu nhỉ.

Theo minh thấy là vậy! Nhưng sau đây Trang sẽ giới thiệu một cách siêu dễ.

Áp dụng vào chính công thức nếu a là số nguyên tố thì a chỉ chia hết cho a à 1!

Nới cách khác a không chia hết cho từ 1 đến (a-1)

CHƯƠNG TRÌNH THƯỜNG

Mã:

program iloveyou;

uses crt;

var a, n, i: Integer;

begin

clrscr;

writeln('nhap n');

readln (n);

for i:=1 to n-1 do begin

if n mod i<>0 then a:=1 else a:=0; (mọi người có thể dùng true/ false nha~đi thi thì nên dùng true / false hơn~)

end;

if a:=1 then writeln (n, 'la so nguyen to') else writeln (n, 'không la so nguyen to');

readln;

end.


CHƯƠNG TRÌNH CON

Mã:

program iuyou;

uses crt;

var a, n, i:integer;

function nt (a,n,i: integer): integer;

for i: =1 to n-1 do begin

if n mod i <>0 then a:=1 else a:=0;

end;

if a:=1 then writeln (n, 'la so nguyen to') else writeln (n, 'không la so nguyen to');

end;

begin

clrscr;

writeln('nhap n');

readln(n);

nt(a,n,i);

readln;

end.

Thế là xong rôi đóa, cảm ơn tui đi hihi, nhớ đăng ký dembuon.vn han huyên với tui nha.

I love you.

Chút chút.

 

Dưới đây là viết chương trình kiểm tra số nguyên tố trong pascal mới nhất được cập nhập bởi onthihsghãy tham khảo chương trình kiểm tra số nguyên tố ngay dưới nha.

Nội dung chính Show

Video kiểm tra n có phải số nguyên tố không

Bài toán kiểm tra số nguyên tố như sau: Viết chương trình Pascal kiểm tra một số n (n <2 tỉ) có phải là số nguyên tố hay không.

Dữ liệu vào file: nguyento.inpDữ liệu ra file: nguyento.outChứa số nYes (No)

Thuật toán kiểm tra số nguyên tố

Dữ liệu trong Pascal thì lưu trong file “nguyento.inp” còn trong Scratch thì lưu trong mảng “Dãy số”.

Kiểm tra số N có phải là số nguyên tố hay không.

Ví dụ:             N = 19            Kết quả là: 19 la so nguyen to

N = 33            Kết quả là: 33 khong phai la so nguyen to

Yêu cầu: Input:   N, là số tự nhiên bất kỳ.

Output: Trả lời “N la so nguyen to”

hoặc “N khong phai la so nguyen to” tùy theo N.

Lưu ý: Số nguyên tố là số chỉ có thể chia hết cho 1 và chính nó ( N ).

Ngược lại, N là không phải là số nguyên ==> N chia hết cho một số trong khoảng từ 2 đến (N-1).

Hướng dẫn:

Bài toán được thực hiện qua 3 bước cụ thể như sau:

–         Thông báo nhập liệu, và nhập dữ liệu vào cho N
–         Tiến hành kiểm tra N có phải là số nguyên tố hay không:
–         Xuất câu trả lời “N la so nguyen to” hoặc “N khong phai la so nguyen to” tùy theo giá trị của biến

Chương trình:

Program SNT;
Uses crt;
Var n , i :Integer;                                    // Khai bao bien su dung
BEGIN
            Write(‘Nhap vao mot so:’);        // Thong bao nhap lieu
            Readln(n);                                   // Nhap gtri N, (voi &N la lay d/c bien N)
            i := round( sqrt(n) );
            If( n mod i <> 0) then                 // Xuat cau tra loi cuoi cung
                        Writeln(‘ N la so nguyen to’)
            Else
                        Writeln(‘ N khong la so nguyen to’);
            Readln;
END.

Chương trình kiểm tra số nguyên tố trong Pascal

program kiem_tra_nguyen_to;
var m:longint;f:text;
{------ chuong trinh con kiem tra so nguyen to ----}
function ngto(n:longint):boolean;
var i:longint;
begin
  if n<2 then ngto:=false else ngto:=true;
  for i:=2 to trunc(sqrt(n)) do if n mod i = 0 then
                     begin
                        ngto:=false;
                        break; {thoat vong lap}
                     end;
end;
{--- het CT con------}
{----Than chuong trinh chinh ------}
begin
{----Doc file ----}
	assign(f,'nguyento.inp'); reset(f);
	readln(f,m);close(f);
{----Mo file de ghi----}
	assign(f,'nguyento.out'); rewrite(f);

 	if ngto(m) then write(f,'yes')
	else write(f,'no');
close(f);
end.

Thực ra khi thành thạo một ngôn ngữ lập trình rồi thì bạn chỉ cần nắm vững thuật toán là có thể code trên các ngôn ngữ khác.

Một số bài tập kiểm tra số nguyên tố pascal

Bài 1: Nhập vào một số nguyên không âm, kiểm tra xem nó có phải là số nguyên tố hay không?

Program SO_NGUYEN_TO;
Uses crt;
Var i,n: integer;
Begin
Clrscr;
Writeln(‘KIEM TRA SO NGUYEN TO:’);
Writeln(‘—————————‘);
Write (‘Nhap so can kiem tra n = ‘); readln(n);
If (n=0) or (n=1) then
Writeln(n,’ Khong phai la so nguyen to’)
Else
Begin
i:=1;
Repeat
i:= i+1;
Until (n mod i= 0) or (i*i>n);
If i*i>n then Writeln (n,’ la so nguyen to’)
Else Writeln (n,’ khong phai la so nguyen to’);
End;
Readln;
End.

Bài 2: In ra các số nguyên tố nhỏ hơn hoặc bằng N (N là số nguyên không âm được nhập từ bàn phím).

Program CAC_SO_NGUYEN_TO;
Uses crt;
Var n,i,t: integer;
Begin
Clrscr;
Writeln(‘IN RA CAC SO NGUYEN SO <=N’);
Writeln(‘————————–‘);
Write(‘Nhap n = ‘);readln(n);
If n<2 then
Writeln(‘Khong co so nguyen to nao <=’,n)
Else
Begin
Writeln(‘Cac so nguyen to <= ‘,n,’ la:’);
For i := 2 to n do
Begin
t:= 1;
Repeat
t:= t+1;
Until ( i mod t = 0) or ( t*t>i ) ;
If( t*t>i) then
Write(i:4);
End;
Readln;
End.

Trong thuật toán Scratch trên đã sử dụng thuật toán cộng dồn để đếm số ước, còn trong code pascal thì lại dùng một kỹ thuật khác đó là gài để nếu thấy số nguyên có thêm một ước không phải là 1 và chính nó thì khẳng định ngay đó không phải là số nguyên tố.

Rõ ràng là hai thuật toán trên hơi khác nhau mình thì thích cách viết gài như trong Pascal, bạn hãy dùng kĩ thuật này để viết lại chương trình trong Scratch xem thế nào nha.