Đề Tài: Đưa ra các số nguyên tố trong khoảng từ 1 đến n có sử dụng hàng đợi lưu trữ bằng danh sách liên kết đơn. Phần 1: Viết giả mã Phần 2: Viết chương trình dễ hiểuchính xác phù hợp với tất cả mọi đối tượng
Trang 1Bài Tập Lớn Môn Cấu Trúc Dữ Liệu Và Giải Thuật
Đề Tài: Đưa ra các số nguyên tố trong khoảng từ 1 đến n có sử dụng hàng đợi lưu trữ bằng danh sách liên kết đơn.
Phần 1: Viết Giả mã
-Vào: dãy số từ 1 đến n
-Ra: tất cả số nguyên tố
1.{ khởi tạo hàng đợi rỗng bằng DSLK đơn}
Procedure Create-Empty(Var Q : Queue);
Begin
F := R := 0;
End;
2 {Kiểm tra hàng đợi rỗng bằng DSLK đơn}
Function IsEmpty(Q : Queue) : Boolean;
Begin
IsEmpty := Q^.F = NULL;
End;
3 .Thêm phần tử vào hàng đợi bằng DSLK đơn
Procedure AddQ(Var Q : Queue; X : Kieuphantu);
Var P : pointer;
Begin
{tạo một phần tử mới}
New(P);
P^.Info := X;
Trang 2P^.Next := NULL;
{thêm phần tử mới vào cuối hàng đợi}
If IsEmpty(Q) Then
begin
Q^.F := P;
Q^.R := P;
end Else
begin
Q.R^.Link := P;
Q^.R := P;
end;
End;
4.Kiểm tra các tất cả các phần tử để tìm ra số nguyên tố
Function sont
Begin
Dem:=0;
For i:=1 to n do
If n mod i = 0 then dem := dem+1;
If (n < 2) or (dem <> 2) then n { không phải là số nguyên tố }; Else if dem = 2 then n { là số nguyên tố };
End;
5 Return 0;
Trang 3Phần 2: Viết chương trình
#include<stdio.h>
#include<math.h>
int main()
{
int q, i;
printf("nhap so luong phan tu: ");
scanf("%d",&q);
//tim so nguyen to
int dem=0;
for(int n=2;n<=q;n++);
{
int lasont = 1;
for(int i=2;i<=sqrt(n)&& lasont;i++)
lasont = (n%i);
if(lasont) {
printf("%d la so nguyen to\n",n);
dem++;
} //else
Trang 4//printf("%d khong la so nguyen to\n",n);
}
//in ra man hinh tat ca so nguyen to
printf("co %d so nguyen to tu 1 den %d\n",dem,q);
return 0;
}