Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (355.23 KB, 26 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
<sub>Input: N là một số nguyên dương;</sub><sub>Input: N là một số nguyên dương;</sub>
<sub>Output: "N là số nguyên tố" hoặc "N </sub><sub>Output: "N là số nguyên tố" hoặc "N </sub>
không là số ngun tố".
khơng là số ngun tố".
<i><b><sub>Ý tưởng:</sub></b><b><sub>Ý tưởng:</sub></b></i>
<sub>Nếu N = 1 thì N khơng là số ngun tố;</sub><sub>Nếu N = 1 thì N khơng là số ngun tố;</sub>
<sub>Nếu 1 < N < 4 thì N là số nguyên tố;</sub><sub>Nếu 1 < N < 4 thì N là số nguyên tố;</sub>
<sub>Nếu N</sub><sub>Nếu N</sub><sub></sub><sub></sub><sub> 4 và khơng có ước số trong </sub><sub> 4 và không có ước số trong </sub>
phạm vi từ 2 đến phần nguyên căn bậc hai
phạm vi từ 2 đến phần nguyên căn bậc hai
của N thì N là số nguyên tố.
của N thì N là số ngun tố.
<i><b><sub>Thuật toán</sub></b><b><sub>Thuật toán</sub></b></i>
<i><b>a) Thuật toán diễn tả bằng cách liệt kê</b></i>
<i><b>a) Thuật toán diễn tả bằng cách liệt kê</b></i>
<sub>Bước 1</sub><sub>Bước 1</sub><sub>: Nhập số nguyên dương </sub><sub>: Nhập số nguyên dương </sub><i><sub>N</sub><sub>N</sub></i><sub>;</sub><sub>;</sub>
<sub>Bước 2</sub><sub>Bước 2</sub><sub>: Nếu </sub><sub>: Nếu </sub><i><sub>N</sub><sub>N</sub></i><sub> = 1 thì thơng báo </sub><sub> = 1 thì thơng báo </sub><i><sub>N</sub><sub>N</sub></i><sub> khơng </sub><sub> khơng </sub>
ngun tố rồi kết thúc;
nguyên tố rồi kết thúc;
<sub>Bước 3</sub><sub>Bước 3</sub><sub>: Nếu </sub><sub>: Nếu </sub> <i><sub>N</sub><sub>N</sub></i><sub> < 4 thì thơng báo </sub><sub> < 4 thì thơng báo </sub> <i><sub>N</sub><sub>N</sub></i><sub> là </sub><sub> là </sub>
nguyên tố rồi kết thúc;
nguyên tố rồi kết thúc;
<sub>Buớc 4</sub><sub>Buớc 4</sub><i><sub>: i</sub><sub>: i</sub></i> <sub></sub><sub></sub><sub> 2;</sub><sub> 2;</sub>
<i><b><sub>Thuật toán</sub></b><b><sub>Thuật toán</sub></b></i>
<i><b>a) Thuật toán diễn tả bằng cách liệt kê</b></i>
<i><b>a) Thuật toán diễn tả bằng cách liệt kê</b></i>
<sub>Bước 5</sub><sub>Bước 5</sub><sub>: Nếu i > thì thơng báo N là </sub><sub>: Nếu i > thì thông báo N là </sub>
nguyên tố rồi kết thúc;
nguyên tố rồi kết thúc;
<sub>Bước 6</sub><sub>Bước 6</sub><sub>: Nếu N chia hết cho i thì thơng </sub><sub>: Nếu N chia hết cho i thì thơng </sub>
báo N khơng ngun tố rồi kết thúc;
báo N không nguyên tố rồi kết thúc;
<sub>Bước 7</sub><sub>Bước 7</sub><sub>: i </sub><sub>: i </sub><sub></sub><sub></sub><sub> i + 1 rồi quay lại bước 5.</sub><sub> i + 1 rồi quay lại bước 5.</sub>
Nhập N
Nhập N
N=1 ?
N=1 ?
N<4 ?
N<4 ?
i
i 2 2
i
i i + 1 i + 1
i > ?
i > ?
N chia hết
N chia hết
cho i ?
cho i ?
-<sub>N là NTố</sub><sub>N là NTố</sub>
-<sub>Kết thúc</sub><sub>Kết thúc</sub>
-N không là Ntố
-N không là Ntố
<i><b>N = 29 ; phần nguyên = 5</b></i>
<i><b>N = 29 ; phần nguyên = 5</b></i>
2
22
2 3333 4<sub>4</sub><sub>4</sub><sub>4</sub> 555<sub>5</sub> 6<sub>6</sub><sub>6</sub><sub>6</sub>
i =
i =
<b>29/2</b>
<b>29/229/2</b>
<b>29/2</b> <b>29/329/329/329/3</b> <b>29/4<sub>29/4</sub><sub>29/4</sub><sub>29/4</sub></b> <b>29/5<sub>29/5</sub><sub>29/5</sub><sub>29/5</sub></b>
N/i
N/i
Không
Không
Không
Không KhôngKhôngKhôngKhông Không<sub>Không</sub><sub>Không</sub><sub>Không</sub> Không<sub>Không</sub><sub>Không</sub><sub>Không</sub>
Chia hết
Chia hết
Không?
Không?
29
<i><b>N = 45 ; phần nguyên = 6</b></i>
<i><b>N = 45 ; phần nguyên = 6</b></i>
2
22
2 333<sub>3</sub>
i =
i =
<b>45/2</b>
<b>45/2</b>
<b>45/2</b>
<b>45/2</b> <b>45/345/345/3<sub>45/3</sub></b>
N/i
N/i
Khơng
Khơng
Khơng
Khơng Chia hếtChia hếtChia hết<sub>Chia hết</sub>
Chia hết
Chia hết
Không?
Không?
45
<i><b>Ví dụ 2</b></i>
<i><b>Ví dụ 2</b><b>. </b><b>. </b></i>Bài tốn sắp xếp:Bài toán sắp xếp:
Cho dãy A gồm N số nguyên a
Cho dãy A gồm N số nguyên a<sub>1</sub><sub>1</sub>, a, a<sub>2</sub><sub>2</sub>,..., a,..., a<sub>N</sub><sub>N</sub>. .
Cần sắp xếp các số hạng để dãy A trở thành
Cần sắp xếp các số hạng để dãy A trở thành
dãy không giảm (tức là số hạng trước không
dãy không giảm (tức là số hạng trước không
lớn hơn số hạng sau).
lớn hơn số hạng sau).
<i><b><sub>Xác định bài toán</sub></b><b><sub>Xác định bài toán</sub></b></i>
Input: Dãy A gồm N số nguyên a<sub>Input: Dãy A gồm N số nguyên a</sub><sub>1</sub><sub>1</sub>, a<sub>, a</sub><sub>2</sub><sub>2</sub>,..., a<sub>,..., a</sub><sub>N</sub><sub>N</sub>.<sub>.</sub>
<sub>Output: Dãy A được sắp xếp lại thành dãy </sub><sub>Output: Dãy A được sắp xếp lại thành dãy </sub>
không giảm.
không giảm.
<i><b><sub>Ý tưởng: </sub></b><b><sub>Ý tưởng: </sub></b></i><sub>Với mỗi cặp số hạng đứng liền kề trong </sub><sub>Với mỗi cặp số hạng đứng liền kề trong </sub>
dãy, nếu số trước lớn hơn số sau ta đổi chỗ chúng
dãy, nếu số trước lớn hơn số sau ta đổi chỗ chúng
cho nhau. Việc đó được lặp lại, cho đến khi không
cho nhau. Việc đó được lặp lại, cho đến khi khơng
có sự đổi chỗ nào xảy ra nữa.
có sự đổi chỗ nào xảy ra nữa.
<sub>Thuật toán: Cách liệt kê</sub><sub>Thuật toán: Cách liệt kê</sub>
Bước 1: Nhập N, và dãy a<sub>Bước 1: Nhập N, và dãy a</sub><sub>1</sub><sub>1</sub>, a<sub>, a</sub><sub>2</sub><sub>2</sub>,..., a<sub>,..., a</sub><sub>N</sub><sub>N</sub>;<sub>;</sub>
<sub>Bước 2: M </sub><sub>Bước 2: M </sub><sub></sub><sub></sub><sub> N;</sub><sub> N;</sub>
<sub>Bước 3: Nếu M < 2 thì đưa ra dãy A đã được </sub><sub>Bước 3: Nếu M < 2 thì đưa ra dãy A đã được </sub>
sắp xếp rồi kết thúc;
sắp xếp rồi kết thúc;
<sub>Bước 4: M </sub><sub>Bước 4: M </sub><sub></sub><sub></sub><sub> M – 1, i </sub><sub> M – 1, i </sub><sub></sub><sub></sub><sub> 0;</sub><sub> 0;</sub>
<sub>Bước 5: i </sub><sub>Bước 5: i </sub><sub></sub><sub></sub><sub> i + 1;</sub><sub> i + 1;</sub>
<sub>Bước 6: Nếu i > M thì quay lại bước 3;</sub><sub>Bước 6: Nếu i > M thì quay lại bước 3;</sub>
Bước 7: Nếu a<sub>Bước 7: Nếu a</sub><sub>i</sub><sub>i</sub> > a<sub> > a</sub><sub>i+1</sub><sub>i+1</sub> thì tráo đổi a<sub> thì tráo đổi a</sub><sub>i</sub><sub>i</sub> và a<sub> và a</sub><sub>i+1 </sub><sub>i+1 </sub>;<sub>;</sub>
<sub>Bước 8: Quay lại bước 5.</sub><sub>Bước 8: Quay lại bước 5.</sub>
Nhập N ; a
Nhập N ; a<sub>1</sub><sub>1</sub>,a,a<sub>2</sub><sub>2</sub>,..a,..a<sub>N</sub><sub>N</sub>
M
M N N
M<2 ?
M<2 ?
M
M <sub></sub><sub></sub> M -1 ; i M -1 ; i 0 0
Tráo đổi a
Tráo đổi a<sub>i</sub><sub>i</sub> và a và a<sub>i+1</sub><sub>i+1</sub>
i
i <sub></sub><sub></sub> i + 1 i + 1
i > M ?
i > M ?
-<sub>Đưa ra A</sub><sub>Đưa ra A</sub>
-<sub>Kết thúc</sub><sub>Kết thúc</sub>
đúng
đúng
đúng
đúng saisai
sai
sai
đúng
đúng
<i><b>Sơ đồ khối</b></i>
a
a<sub>i</sub><sub>i</sub> > a > a<sub>i+1</sub><sub>i+1</sub> ? ?
04/11/21 <sub>§ 4. BÀI TỐN VÀ THUẬT TỐN</sub> <sub>14</sub>
<sub>Cho dãy A gồm N số nguyên, đôi một </sub><sub>Cho dãy A gồm N số nguyên, đôi một </sub>
khác nhau: a
khác nhau: a<sub>1</sub><sub>1</sub>, a, a<sub>2</sub><sub>2</sub>,..., a,..., a<sub>N</sub><sub>N</sub> và một số nguyên k. và một số nguyên k.
Cần biết có hay khơng chỉ số i (1
Cần biết có hay không chỉ số i (1 i i N) N)
mà a
mà a<sub>i</sub><sub>i</sub> = k. Nếu có hãy cho biết chỉ số đó. = k. Nếu có hãy cho biết chỉ số đó.
<sub>Số nguyên k được gọi là khóa tìm kiếm </sub><sub>Số ngun k được gọi là khóa tìm kiếm </sub>
(gọi tắt là khóa).
(gọi tắt là khóa).
khác nhau a
khác nhau a<sub>1</sub><sub>1</sub>, a, a<sub>2</sub><sub>2</sub>,..., a,..., a<sub>N</sub><sub>N</sub> và số nguyên k; và số nguyên k;
khơng có số hạng nào của dãy A có giá trị bằng
khơng có số hạng nào của dãy A có giá trị bằng
k.
k.
lượt từ số hạng thứ nhất,so sánh giá trị số hạng
đang xét với khóa cho đến khi hoặc gặp một số
đang xét với khóa cho đến khi hoặc gặp một số
hạng bằng khóa hoặc dãy đã được xét hết và
hạng bằng khóa hoặc dãy đã được xét hết và
không có giá trị nào bằng khố. Trong trường
khơng có giá trị nào bằng khoá. Trong trường
hợp thứ hai dãy A khơng có số hạng nào bằng
hợp thứ hai dãy A khơng có số hạng nào bằng
khố.
khố.
<i><b><sub>Thuật toán</sub></b><b><sub>Thuật toán</sub></b></i>
<i>a) Cách liệt kê</i>
<i>a) Cách liệt kê</i>
<sub>Bước 1: </sub><sub>Bước 1: </sub><sub>Nhập </sub><sub>Nhập </sub><i><sub>N</sub><sub>N</sub></i><sub>, các số hạng </sub><sub>, các số hạng </sub><i><sub>a</sub><sub>a</sub><sub>1</sub><sub>1</sub><sub>, a</sub><sub>, a</sub><sub>2</sub><sub>2</sub><sub>,..., a</sub><sub>,..., a</sub><sub>N</sub><sub>N</sub></i> <sub>và khóa </sub><sub>và khóa </sub><i><sub>k</sub><sub>k</sub></i><sub>;</sub><sub>;</sub>
<sub>Bước 2:</sub><sub>Bước 2:</sub><i><sub> i </sub><sub> i </sub></i><sub></sub><sub></sub><i><sub> 1</sub><sub> 1</sub></i><sub>;</sub><sub>;</sub>
Bước 3: Nếu <sub>Bước 3: Nếu </sub><i>a<sub>a</sub><sub>i</sub><sub>i</sub> = k <sub> = k </sub></i>thì thơng báo chỉ số <sub>thì thơng báo chỉ số </sub><i>i<sub>i</sub></i>, rồi kết thúc;<sub>, rồi kết thúc;</sub>
<sub>Bước 4:</sub><sub>Bước 4:</sub><i><sub> i </sub><sub> i </sub></i><sub></sub><sub></sub><i><sub>i + 1</sub><sub>i + 1</sub></i><sub>;</sub><sub>;</sub>
<sub>Bước 5:</sub><sub>Bước 5:</sub><sub> Nếu </sub><sub> Nếu </sub><i><sub>i </sub><sub>i </sub></i><sub>> </sub><sub>> </sub><i><sub>N </sub><sub>N </sub></i><sub>thì thơng báo dãy A khơng có số </sub><sub>thì thơng báo dãy A khơng có số </sub>
hạng nào có giá trị bằng <i>kk</i>, rồi kết thúc;, rồi kết thúc;
<sub>Bước 6:</sub><sub>Bước 6:</sub><sub> Quay lại bước 3. </sub><sub> Quay lại bước 3. </sub>
Nhập N ; a<sub>1</sub>,a<sub>2</sub>,..a<sub>N</sub> ,k
i 1
a<sub>i</sub> = k ?
i i + 1
i > N ?
-Đưa ra i
-Kết thúc
đúng
đúng
sai
sai
sai
sai
đúng
đúng
<i><b>b) Sơ đồ khối</b></i>
<i><b><sub>Thuật tốn Tìm kiếm nhị phân (Binary Search): </sub></b><b><sub>Thuật tốn Tìm kiếm nhị phân (Binary Search): </sub></b></i>
<i>Cho dãy tăng gồm N số nguyên </i>
<i>Cho dãy tăng gồm N số nguyên </i>aa<sub>1</sub><sub>1</sub>, a, a<sub>2</sub><sub>2</sub>,..., a,..., a<sub>N</sub><sub>N</sub> <i>và số và số </i>
<i>nguyên k. Tìm i mà </i>
<i>nguyên k. Tìm i mà </i>aa<sub>i</sub><sub>i</sub> = k ? = k ?
<i><b><sub>Xác định bài toán</sub></b><b><sub>Xác định bài toán</sub></b></i>
<i><b>Input</b><b><sub>Input</sub></b>: <sub>: </sub></i>Dãy tăng a<sub>Dãy tăng a</sub><sub>1</sub><sub>1</sub>, a<sub>, a</sub><sub>2</sub><sub>2</sub>,..., a<sub>,..., a</sub><sub>N</sub><sub>N</sub> và số nguyên k;<sub> và số nguyên k;</sub>
<i><b>Output</b><b><sub>Output</sub></b>: <sub>: </sub></i>Chỉ số i mà a<sub>Chỉ số i mà a</sub><sub>i</sub><sub>i</sub> = k hoặc thông báo không <sub> = k hoặc thơng báo khơng </sub>
có số hạng nào của dãy có giá trị bằng k.
có số hạng nào của dãy có giá trị bằng k.
Nếu a<sub>Nếu a</sub><sub>Giua</sub><sub>Giua</sub> = k thì Giua là chỉ số cần tìm. Việc tìm <sub> = k thì Giua là chỉ số cần tìm. Việc tìm </sub>
kiếm kết thúc.
kiếm kết thúc.
Nếu a<sub>Nếu a</sub><sub>Giua</sub><sub>Giua</sub> > k thì tìm tiếp trên dãy a<sub> > k thì tìm tiếp trên dãy a</sub><sub>dau</sub><sub>dau</sub>, a<sub>, a</sub><sub>dau+1</sub><sub>dau+1</sub>,..., a<sub>,..., a</sub><sub>Giua–</sub><sub>Giua–</sub>
1
1
Nếu a<sub>Nếu a</sub><sub>Giua</sub><sub>Giua</sub> < k thì thực hiện tìm kiếm trên dãy a<sub> < k thì thực hiện tìm kiếm trên dãy a</sub><sub>Giua+1</sub><sub>Giua+1</sub>, <sub>, </sub>
a
a<sub>Giua+2</sub><sub>Giua+2</sub>,..., a,..., a<sub>cuoi. </sub><sub>cuoi. </sub>
<sub>Quá trình trên sẽ được lặp lại cho đến khi đã tìm </sub><sub>Quá trình trên sẽ được lặp lại cho đến khi đã tìm </sub>
thấy hoặc phạm vi tìm kiếm bằng rỗng (khơng thấy)
thấy hoặc phạm vi tìm kiếm bằng rỗng (khơng thấy)<i>..</i>
<i><b><sub>Thuật toán</sub></b><b><sub>Thuật toán</sub></b></i>
<i>a) </i>
<i>a) <b>Cách liệt kê</b><b>Cách liệt kê</b></i>
Bước 1: Nhập<sub>Bước 1: Nhập</sub> N, dãy <sub> N, dãy </sub>a<sub>a</sub><sub>1</sub><sub>1</sub>, a<sub>, a</sub><sub>2</sub><sub>2</sub>,..., a<sub>,..., a</sub><sub>N</sub><sub>N</sub> và số k ;<sub>và số k ;</sub>
<sub>Bước 2:</sub><sub>Bước 2:</sub><sub> Dau </sub><sub> Dau </sub><sub></sub><sub></sub><sub> 1, Cuoi </sub><sub> 1, Cuoi </sub><sub></sub><sub></sub><sub> N ;</sub><sub> N ;</sub>
<sub>Bước 3:</sub><sub>Bước 3:</sub><sub> Giua </sub><sub> Giua </sub><sub></sub><sub></sub><sub> (dau + cuoi)/2 </sub><sub> (dau + cuoi)/2 </sub><sub>;</sub><sub>;</sub>
Bước 4:<sub>Bước 4:</sub> Nếu a<sub> Nếu a</sub><sub>Giua</sub><sub>Giua</sub> = k thì thơng báo chỉ số <sub> = k thì thơng báo chỉ số </sub>
Giua, rồi kết thúc ;
Giua, rồi kết thúc ;
<i><b><sub>Thuật toán</sub></b><b><sub>Thuật toán</sub></b></i>
<i><b>a) Cách liệt kê</b></i>
<i><b>a) Cách liệt kê</b></i>
Bước 5: <sub>Bước 5: </sub>Nếu a<sub>Nếu a</sub><sub>Giua</sub><sub>Giua</sub> > k thì đặt Cuoi <sub> > k thì đặt Cuoi </sub><sub></sub><sub></sub> Giua–1 rồi <sub> Giua–1 rồi </sub>
chuyển đến bước 7;
chuyển đến bước 7;
<sub>Bước 6:</sub><sub>Bước 6:</sub><sub> Dau </sub><sub> Dau </sub><sub></sub><sub></sub><sub> Giua + 1;</sub><sub> Giua + 1;</sub>
<sub>Bước 7:</sub><sub>Bước 7:</sub><sub> Nếu Dau > Cuoi thì thơng báo dãy A </sub><sub> Nếu Dau > Cuoi thì thơng báo dãy A </sub>
khơng có số hạng có giá trị bằng k, rồi kết thúc;
khơng có số hạng có giá trị bằng k, rồi kết thúc;
<sub>Bước 8: Quay lại bước 3.</sub><sub>Bước 8: Quay lại bước 3.</sub>
Nhập N ; a<sub>1</sub>,a<sub>2</sub>,..a<sub>N</sub> ,k
Dau 1; Cuoi N
a<sub>Giua </sub>= k ?
Cuoi Giua - 1
-Đưa ra Giua
-Kết thúc
đúng
đúng
sai
sai
sai
<i><b>b) Sơ đồ khối</b></i>
-Không có giá trị = k
-Kết thúc
Giua (Dau+Cuoi)/2
a<sub>Giua </sub>> k ?
Dau Giua + 1 Dau > Cuoi ?
sai
sai
đúng