1. Trang chủ
  2. » Luận Văn - Báo Cáo

Về số học thuật toán luận văn thạc sĩ

36 268 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 36
Dung lượng 252,95 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

mở đầuNếu như trước thập niên 70 của thế kỉ XX, Số học vẫn được xem là một trong những ngành lí thuyết xa rời thực tiễn nhất, thì ngày naynhiều thành tựu mới của Số học đã có ứng dụng tr

Trang 1

mở đầu

Nếu như trước thập niên 70 của thế kỉ XX, Số học vẫn được xem

là một trong những ngành lí thuyết xa rời thực tiễn nhất, thì ngày naynhiều thành tựu mới của Số học đã có ứng dụng trực tiếp vào các vấn đềcủa cuộc sống như thông tin, mật mã, kĩ thuật máy tính Một phươnghướng mới đã ra đời và phát triển mạnh mẽ: Số học thuật toán Đây

là một ngành toán học nghiên cứu về các nội dung số học trên cơ sở

sử dụng công cụ thuật toán Số học là một trong những ngành toán cổnhất, còn Thuật toán lại là một khái niệm mới mẻ, ra đời và phát triểntrong thế kỉ XX Do đó, có thể nói Số học thuật toán chính là chiếc cầunối giữa Số học và Thuật toán, và nó được xây dựng trên cơ sở nhữngthành tựu của Toán - Tin học

Một trong những bài toán nổi tiếng nhất đã được giải quyết trongthế kỉ XX là bài toán thứ 10 của Hilbert "Có tồn tại một thuật toántổng quát cho phép ta trả lời một phương trình Diophante cho trước cónghiệm nguyên hay không?" Bài toán này đã được nhà toán học ngườiNga, Michiakêvích, giải quyết trọn vẹn vào năm 1970 với câu trả lờiphủ định, tức là không có một thuật toán như vậy Bài toán thứ 10 củaHilbert được giải quyết là một thành tựu quan trọng của Số học cũngnhư Thuật toán

Số học thuật toán không chỉ phát triển trên những thành tựu của

Số học sơ cấp, mà nó còn tận dụng những thành tựu cua Số học hiệnđại, Đại số hiện đại, Cũng như những ngành toán học khác, trong Sốhọc thuật toán cũng có những bài toán NP, tức là không có một thuậttoán giải trong thời gian đa thức, tiêu biểu là các bài toán: Phân tíchmột số nguyên ra thừa số nguyên tố, thuật toán kiểm tra số nguyên tố,thuật toán chuyển đĩa trong Bài toán Tháp Hà Nội

Trong luận văn này, tôi chỉ đề cập đến những vấn đề cơ sở nhất của

Số học thuật toán, bao gồm những nội dung chính sau:

Giới thiệu các kiến thức cơ sở về thuật toán, độ phức tạp thờigian;

Giới thiệu các khái niệm, kết quả và các bài toán số học cơ sở

có nhiều ứng dụng trong Tin học;

Giới thiệu 20 chương trình tin học viết bằng ngôn ngữ lập trìnhPascal về các thuật toán số học cơ sở, bao gồm: Chuyển đổi hệ ghi cơ

số, kiểm tra nguyên tố; kiểm tra nguyên tố theo xác suất; giải phươngtrình Diophante bậc nhất; giải phương trình đồng dư; tìm số hạng bất

kì trong dãy số Fibonacci,

Ngoài ra, phần phụ lục của luận văn còn đưa ra một hệ thống bàitập về Số học thuật toán

Tác giả xin trân trọng cảm ơn thầy giáo hướng dẫn khoa học

Trang 2

-PGS.TS Nguyễn Thành Quang - đã tận tình hướng dẫn, chỉ bảo và giúp

đỡ để tác giả hoàn thành luận văn

Tác giả cảm ơn các thầy, cô giáo trong chuyên ngành Đại số và Lýthuyết số, Khoa Toán học, Khoa Đào tạo Sau đại học của Trường Đạihọc Vinh đã nhiệt tình giảng dạy, hướng dẫn cho chúng tôi học tập vànghiên cứu

Tác giả xin cảm ơn Trường Đại học Đồng Tháp đã giúp đỡ, tạo điềukiện thuận lợi cho mỗi học viên chúng tôi trong học tập và nghiên cứutheo chương trình liên kết đào tạo sau đại học giữa Trường Đại học Vinh

Nghệ An, tháng 02 năm 2012

Tác giảNguyễn Thành Trung

Trang 3

chương 1 một số kiến thức cơ sở

1.1 Thuật toán

1.1.1 Thuật toán Có thể định nghĩa thuật toán theo nhiều cách khácnhau, ở đây chúng tôi không trình bày chặt chẽ về thuật toán như trongmột giáo trình logic, mà sẽ hiểu khái niệm thuật toán theo một cáchthông thường nhất

Thuật toán là một quy tắc để với những dữ liệu ban đầu đã cho, tatìm được lời giải sau một thời gian hữu hạn

Có thể nói rằng, một thuật toán cần phải thỏa mãn các yêu cầu sauđây:

[1] Tính hữu hạn Thuật toán cần phải kết thúc sau một số hữu hạnbước Khi thuật toán ngừng làm việc, ta phải thu được câu trả lời chovấn đề đặt ra

[2] Tính xác định ở mỗi bước, thuật toán cần phải xác định, nghĩa làchỉ rõ ra việc cần làm

Ngoài ra, ta còn phải xét đến tính hiệu quả của thuật toán Có rấtnhiều thuật toán, về mặt lí thuyết là kết thúc sau hữu hạn bước, tuynhiên thời gian "hữu hạn" đó vượt quá khả năng làm việc của chúng

ta Những thuật toán như vậy sẽ không được xét ở đây vì chúng tôi chỉquan tâm những thuật toán có thể sử dụng thật sự trên máy tính.Cũng do mục tiêu nói trên, chúng ta cần phải chú ý đến độ phứctạp của thuật toán Độ phức tạp của thuật toán có thể đo bằng khônggian, tức là dung lượng bộ nhớ của máy tính cần thiết để thực hiện thuậttoán, và bằng thời gian, tức là thời gian máy tính thực hiện thuật toánnày Trong luận văn này, khi nói đến độ phức tạp của thuật toán, chúng

ta luôn hiểu độ phức tạp thời gian

Dĩ nhiên, thời gian làm việc của máy tính khi chạy một thuật toánnào đó không chỉ phụ thuộc vào thuật toán mà còn phụ thuộc vào máytính đang được sử dụng Vì thế, để có một tiêu chuẩn chung, ta sẽ đo độphức tạp của một thuật toán bằng số các phép tính phải làm khi thựchiện thuật toán Nhưng điều này lại phụ thuộc vào độ lớn của dữ kiệnđầu vào Trong những ứng dụng thực tiễn, ta chỉ cần ước lượng thật tốt

độ phức tạp này Để làm được điều đó, ta dùng khái niệm bậc O-lớn.1.1.2 Độ phức tạp của thuật toán Giả sữ f(n) và g(n) là hai hàmxác định trên tập hợp các số nguyên dương Ta nói, f(n) có bậc O-lớncủa g(n), và viết f(n) = O(g(n)) hoặc f = O(g), nếu tồn tại một số C >

0 sao cho với n đủ lớn, các hàm f(n) và g(n) đều dương đồng thời f(n)

< C.g(n)

Trang 4

Ví dụ: Cho hai đa thức f(n) =

[4] Với mọi  > 0, ta luôn có logn = O(n)

1.1.4 Định nghĩa Một thuật toán được gọi là có độ phức tạp đa thứcnếu số các phép tính cần thiết khi thực hiện thuật toán đó không vượtquá O(logdn), trong đó n là độ lớn của đầu vào và d là số nguyên dươngnào đó

Nói cách khác, nếu đầu vào là các số k-bit thì thời gian thực hiệnthuật toán là O(kd), tức là tương đương với một đa thức của k

1.2 Số nguyên1.2.1 Định lí Giả sử b là một số nguyên lớn hơn 1 Khi đó mọi sốnguyên n có thể được viết duy nhất dưới dạng

n = akbk+ak−1bk−1 + +a1b+a0trong đó aj là các số nguyên, 0 ≤ aj ≤ b −1, j = 0,1,2, , k và hệ số đầutiên ak 6= 0

Số b nói trong định lí 1.2.1 được gọi là cơ số biểu diễn Các hệ biểudiễn cơ số 10 và 2 tương ứng được gọi là hệ thập phân và hệ nhị phân.Các hệ số aj được gọi là các chữ số Về sau ta dùng bit để chỉ chữ sốtrong hệ nhị phân

Nếu số nguyên n biểu diễn trong cơ số b có k chữ số thì từ chứngminh trên, ta có: bk−1 ≤ n < bk

Như vậy, số chữ số của n được tính theo công thức:

Trang 5

hệ cơ số 8 hoặc 16 Lí do chủ yếu là vì việc chuyển một số viết ở cơ sốnày sang cơ số kia trong 3 cơ số được thực hiện một cách dễ dàng Ví

dụ, muốn chuyển một số trong cơ số 2 sang cơ số 8, ta chỉ việc nhóm từphải sang trái từng khối 3 chữ số, rồi chuyển số được viết trong khối đósang dạng thập phân Chẳng hạn, số (1111001010)2 được tách thành cácnhóm 11, 111, 001, 010 Từ đó, ta được (11111001010)2 = (3712)8

Ta có thể làm tương tự số đã cho thành số viết trong cơ số 16, chỉcần nhóm thành từng bộ 4 chữ số Chú ý rằng, trong trường hợp này,cần thêm vào các kí hiệu mới để chỉ các "chữ số" từ 10 đến 15

1.2.2 Số nguyên tố Số nguyên tố là số nguyên lớn hơn 1, không chiahết cho số nguyên dương nào ngoài 1 và chính nó Số nguyên lớn hơn 1không phải là số nguyên tố được gọi là hợp số

Định lí sau đây của Số học là một cơ sở quan trọng của thuật toántìm các số nguyên tố không vượt quá một số tự nhiên cho trước

1.2.3 Định lí Mọi hợp số n đều có ước nguyên tố không vượt quá √

n.Chứng minh Thật vậy, vì n là hợp số nên ta gọi a và b là các ước thật

sự của n Khi đó n = ab, trong đó 1 < a ≤ b < n Rõ ràng ta phải có ahoặc b không vượt quá √

n, giả sử đó là a Khi đó, ước nguyên tố của acũng đồng thời là ước nguyên tố của n

Từ định lí 1.2.3, ta có thuật toán tìm ra các số nguyên tố nhỏ hơnhoặc bằng số nguyên dương n cho trước

1.2.4 Thuật toán sàng các số nguyên tố của Eratosthenes Trướctiên, ta viết dãy các số tự nhiên từ 1 đến n Trong dãy đó, ta gạch bỏ số

1 vì nó không phải là số nguyên tố Số nguyên tố đầu tiên của dãy là số

2 Tiếp theo đó ta gạch khỏi dãy số tất cả những số chia hết cho 2 Sốđầu tiên không chia hết cho 2 là 3: đó chính là số nguyên tố Ta lại gạchkhỏi dãy số còn lại những số nào không chia hết cho 3 Ta thu được sốnguyên tố tiếp theo là 5 Tiếp tục như thế, ta gạch khỏi dãy những sốchia hết cho mọi số nguyên tố bé hơn √

n

Sàng Eratosthenes mặc dù cho ta thuật toán xác định mọi số nguyên

tố không vượt quá một số cho trước nhưng lại rất ít được sử dụng đểxác định xem một số đã cho có phải là số nguyên tố hay không Nguyênnhân là vì thuật toán có độ phức tạp khá lớn: để kiểm tra n, ta phảithực hiện phép chia cho tất cả các số nguyên tố không vượt quá √

n.1.2.5 Định lí cơ bản của Số học Mọi số nguyên lớn hơn 1 đều phântích được một cách duy nhất thành tích các số nguyên tố, trong đó cácthừa số được viết với thứ tự không giảm

1.3 Quan hệ đồng dư1.3.1 Định nghĩa Giả sử m là một số nguyên dương Ta nói hai sốnguyên a và b là đồng dư với nhau modulo m nếu m chia hết hiệu a - b

Trang 6

Để chỉ quan hệ đồng dư, ta dùng kí hiệu a ≡ b(mod m).

Như vậy, a ≡ b(mod m) khi và chỉ khi tồn tại số nguyên k sao cho

có nghiệm duy nhất modulo M = m1m2 mr

1.3.3 Định lí Wilson Cho p là số tự nhiên lớn hơn 1 Số p là nguyên

tố khi và chỉ khi (p −1)! ≡ −1(mod p)

Định lí Wilson có thể dùng để kiểm tra một số có phải là số nguyên

tố hay không Tuy nhiên, dễ thấy rằng thuật toán dựa trên định lí son khó có thể sử dụng với những số nguyên lớn vì số các phép tính bitquá cao và gặp độ phức tạp thời gian

Wil-Để đơn giản, ta gọi công việc xem xét một số đã cho có phải là sốnguyên tố hay không là kiểm tra nguyên tố Định lí sau đây có nhiềuứng dụng trong kiểm tra nguyên tố

1.3.4 Định lí Fermat bé Nếu p là số nguyên tố và a là số không chiahết cho p thì ap−1 ≡ 1(mod p) Nói cách khác, nếp p là số nguyên tố và

a là số nguyên dương thì ap ≡ a(mod p)

Vấn đề đặt ra là nếu tồn tại số nguyên dương b thỏa điều kiện

bn−1 ≡ 1(mod n) thì có suy ra được n là số nguyên tố hay không? Câutrả lời là phủ định

Thật vậy, ta có: 2560 = (22)280 ≡ 1(mod 3), 2560 = (210)56 ≡ 1(mod 11)

và 2560 = (216)35 ≡1(mod 17) Do đó, 2560 ≡ 1(mod 561) Nhưng 561 không

là số nguyên tố vì 561 = 3.11.17 Như vậy, chiều ngược lại của định líFermat bé là không đúng

Tuy nhiên, nếu một số nguyên thỏa mãn các giả thuyết của định líFermat bé thì "có nhiều khả năng" nó là số nguyên tố Ta có định nghĩasau:

1.3.5 Định nghĩa

Giả sử b là một số nguyên dương Nếu n là hợp số nguyên dương

và bn ≡ b(mod n) thì n được gọi là số giả nguyên tố cơ sở b

Trong trường hợp (b, n) = 1, ta thường dùng định nghĩa tương đương

bn−1 ≡1(mod n)

Ví dụ: Vì 2560 ≡ 1(mod 561) nên 561 là số giả nguyên tố cơ sở 2

1.3.6 Định lí Có vô số số giả nguyên tố cơ sở 2

Chứng minh Giả sử n là một số giả nguyên tố cơ sở 2, ta sẽ chứng tỏ rằng

m = 2n−1cũng là số giả nguyên tố cơ sở 2 Thật vậy, theo giả thiết thì n

Trang 7

là hợp số nên ta giả sử n =dt (1< d, t < n) Lại do: m = 2n−1 = 2dt−1

nên 2dt|(m+ 1) Suy ra 2d|(m+ 1) Do đó, 2d−1|m Vậy m là hợp số Mặtkhác, do n là số giả nguyên tố nên 2n ≡ 2(mod n)

Do đó tồn tại số k sao cho 2n−2 = kn Ta có: 2m−1 = 2kn, và do đó,

m = (2n −1)|(2nk−1) = 2m−1 −1, tức là 2m−1 ≡ 1(mod m)

Vậy m là số giả nguyên tố cơ sở 2

Như vậy, để kiểm tra một số có phải là số nguyên tố không, trướctiên ta xem nó có phải là số giả nguyên tố cơ sở 2 không, sau đó có thểtiếp tục kiểm tra đối với cơ sở khác Tuy nhiên, tồn tại các số giả nguyên

tố đối với mọi cơ sở, đó là số Carmichael

1.3.7 Định nghĩa Hợp số nguyên n thỏa mãn bn−1 ≡ 1(mod n) vớimọi số nguyên dương b sao cho (n, b) = 1 được gọi là số Carmichael

Ví dụ: Số nguyên 561 = 3.11.17 là một số Carmichale Thật vậy, nếu như

(b,561) = 1 thì ta suy ra (b,3) = (b,5) = (b,7) = 1 Theo định lí Fermat bé,

ta có: b2 ≡ 1(mod 3), b10 ≡ 1(mod 11), b16 ≡1(mod 17) Và do đó ta được:

b560 = (b2)280 ≡1(mod 3),

b560 = (b10)56 ≡1(mod 11),

b560 = (b16)35 ≡1(mod 17).Suy ra: b560 ≡ 1(mod 561) với mọi số nguyen dương b thỏa điều kiện

(b,561) = 1

1.3.8 Định lí Nếu n =q1.q2 qk, trong đó qj là các số nguyên tố khácnhau thỏa điều kiện (qj −1)|(n − 1) với mọi j = 1, 2, , k thì n là sốCarmichael

Như vậy, việc kiểm tra nguyên tố sẽ khó khăn nếu ta gặp phải các sốCarmichael Tuy nhiên, ta có thể khắc phục bằng cách sau đây: Nếu gặpđồng dư bn−1 ≡ 1(mod n) thì ta chuyển sang xét đồng dư bn−12 ≡ x(mod

n) Nếu n là số nguyên tố thì x ≡ 1(mod n) hoặc x ≡ −1(mod n), ngượclại thì n phải là hợp số

Ví dụ: Với số Carmichael bé nhất 561, ta có:5561−12 = 5280 ≡ 67(mod 561).Vậy 561 là hợp số

1.3.9 Định nghĩa Giả sử n là số nguyên dương lẻ, n −1 = 2st, trong đó

s là số nguyên không âm, t là số nguyên dương lẻ nếu s 6= 0 Ta nói rằng

n trải qua được kiểm tra Miller cơ sở b nếu với mọi số nguyên dương bthì hoặc bt ≡ 1(mod n) hoặc b2jt ≡ −1(mod n) với j nào đó thỏa điềukiện 0 ≤ j ≤ s −1

1.3.10 Mệnh đề Nếu n là số nguyên tố thì n trải qua được kiểm traMiller cơ sở b với mọi số b sao cho n là ước của b

Thật vậy, giả sử n − 1 = 2st Ta đặt xk = bn−12k = b2s−kt với k = 0, s

Vì n là số nguyên tố nên theo định lí Fermat bé, ta được: x0 ≡ 1(mod

n) Khi đó, x1 = bn−12 Suy ra x21 = x0 ≡ 1(mod n), tức là x ≡ 1(mod n)

Trang 8

hoặc x ≡ −1(mod n) Tiếp tục quá trình như vậy, ta sẽ đi đến kết luậnrằng: hoặc xk ≡ 1(mod n) hoặc xk ≡ −1(mod n) với k = 0, s Vậy n trảiqua được kiểm tra Miller cơ sở b.

Dễ thấy rằng, nếu n trải qua được kiểm tra Miller thì n là số giảnguyên tố cơ sở b Ta có định nghĩa sau:

1.3.11 Định nghĩa Số nguyên n được gọi là số giả nguyên tố mạnh

cơ sở b nếu nó là hợp số và trải qua được kiểm tra Miller cơ sở b

Như vậy, các số giả nguyên tố mạnh còn ít hơn các số giả nguyên

tố Tuy nhiên, ta có định lí sau đây:

1.3.12 Định lí Tồn tại vô số số giả nguyên tố mạnh cơ sở 2

Thật vậy, giả sử n là một số giả nguyên tố cơ sở 2 Khi đó, với sốnguyên lẻ nào đó, ta có 2n−1−1 = nk Đặt N = 2n−1, khi đó nó có ước

là 2d−1 với d là ước nào đó của n Mặt khác:

N −1 = 2n−2 = 2(2n−1−1) = 2nk và 2N −12 = 2nk = (2n)k ≡ 1(mod N).Vậy với mỗi số giả nguyên tố n, ta xây dượng được số giả nguyên tốmạnh N và các số n khác nhau cho ta các số N khác nhau Định lí nàyđược chứng minh vì có vô số số giả nguyên tố cơ sở 2

Ta có thể dùng kiểm tra Miller để kiểm tra nguyên tố những sốkhông lớn lắm Ta biết rằng, số giả nguyên tố mạnh lẻ cơ sở 2 bé nhất

là 2047 Như vậy, nếu n lẻ và n < 2047, thì n là nguyên tố nếu nó trảiqua được kiểm tra Miller Cách làm này chỉ áp dụng được khi cần kiểmtra nguyên tố những số không lớn Đối với những số lớn, ta có thể dùngthuật toán xác suất dựa trên định lí sau đây:

1.3.13 Định lí Nếu n là một hợp số dương lẻ thì tồn tại không quá

4 Như vậy, nếu ta chọn k số ngẫu nhiên thì xác suất

để n trải qua kiểm tra Miller đỗi với k cơ sở đó sẽ bé hơn 1

4k Khi đó với

k đủ lớn, ví dụ k = 20, xác suất đó quá nhỏ, nên với n trải qua với 20

cơ sở ngẫu nhiên thì có thể tin "hầu chắc chắn" rằng n là số nguyên tố.1.3.14 Định nghĩa Phi hàm Euler, kí hiệu là φ(n), là hàm số học cógiá trị tại n bằng số các số không vượt quá n và nguyên tố cùng nhauvới n

Trang 9

1.3.15 Định lí Euler Nếu m là số nguyên dương và a là số nguyên tốcùng nhau với m thì aφ(m) ≡ 1(mod m), trong đó φ là hàm số học Euler.Định lí Euler có thể dùng để tìm nghịch đảo modulo m Chẳng hạn,nếu a và m là các số nguyên tố cùng nhau, ta có aaφ(m)−1 ≡ 1(mod m),tức là aφ(m)−1 là nghịch đảo của a modulo m Từ đó cũng suy ra nghiệmcủa phương trình đồng dư tuyến tính ax ≡ b(mod m), với (a, m) = 1 là

k =pα1

1 pα2

2 pαs

s Khi đó, aφ(pαii ) ≡ 1(mod pαi

i ) Nếu N là bội chung nhỏ nhất của các

Trang 10

chương 2 một số thuật toán số học

Chương này chủ yếu giới thiệu các thuật toán số học được lập trìnhbằng ngôn ngữ Pascal

2.1 Giới thiệu ngôn ngữ PascalNgôn ngữ Pascal do giáo sư Niklaus Wirth (Trường Đại học KỹThuật Zurich, Thụy Sĩ) đưa ra vào năm 1970 Lập trình bằng ngôn ngữPascal có định kiểu mạnh mẻ Pascal là ngôn ngữ có cấu trúc:

- Về mặt dữ liệu,

- Về mặt lênh,

- Về mặt chương trình

Thuật giải và chương trình:

- Thuật giải: Là tập hợp hữu hạn các thao tác (các bước thực hiệncác công việc.)

- Chương trình: Là tập hợp các lệnh điều khiển máy tính thực hiện.2.2 Một số thuật toán số học được lập trình bằng ngôn ngữ

Pascal2.1.1 Thuật toán chuyển một số nguyên dương từ hệ thập phânsang hệ nhị phân

- Thuật toán

[B1 ] Nhập số nguyên dương n

[B2] Nếu n ≤ 1 thì in ra kết quả Ngược lại thực hiện [B3]

[B3] Thực hiện phép chia n cho 2, ta được thương là r1 Tiếp tục thựchiện phép chia r1 cho 2, ta được thương r2 Rồi lại lấy r2 chia cho 2, tađược thương r3 Quá trình trên kết thúc ở bước thứ i nào đó với ri = 0

(i = 1, 2, 3, ) Khi đó, hiển thị kết quả

Trang 11

n:= n div 2;

i:= i+1;

Until (n=0);

Write(’Dang nhi phan can tim la: ’);

For j:=i-1 Downto 1 do

For i:=1 to length(s) do

If S[i]=’1’ then a[i]:=1

Write(’So thap phan la: ’,n);

Writeln(’Nhan Enter de ket thuc chuong trinh.’);

Readln;

End

Trang 12

2.2.3 Thuật toán tìm tất cả các ước dương của một số nguyêndương

Writeln(’Tat ca cac uoc nguyen duong cua ’,n,’ la:’ );

For i:= 1 to trunc(n/2) do

Trang 13

For i:= 2 to trunc(sqrt(n)) do

If n mod i = 0 then exit;

If ngto(n) = true then

Writeln(n,’ la so nguyen to.’)

Else

Writeln(n,’ khong la so nguyen to.’);

Writeln(’Nhan Enter de ket thuc chuong trinh.’);

[B2] Kiểm tra tính nguyên tố của số nguyên dương i không vượt quá n

[B3] In ra kết quả nếu i là số nguyên tố

If i mod j =0 then ngto:= false;

If ngto = true then write(’ ’,i,’ ’);

End;

Writeln(’Nhan Enter de ket thuc chuong trinh.’);

Trang 14

End

2.2.6 Thuật toán kiểm tra số hoàn chỉnh

- Thuật toán

[B1] Nhập số nguyên dương n cần kiêm tra

[B2] Tính tổng S các ước dương của n Nếu S = 2n thì n là số hoàn hảo,ngược lại thì hiển thị ra màn hình n không là số hoàn hảo

Writeln(n,’ khong la so hoan hao.’);

Writeln(’Nhan Enter de ket thuc chuong trinh.’);

Readln;

End

2.2.7 Thuật toán tìm tam giác Pascal

- Thuật toán

[B1] Nhập số dòng muốn hiển thị của tam giác Pascal, n

[B2] Phần tử thứ i của dòng thứ k (trừ phần tử đầu và phần tử cuối củadòng k) bằng tổng của hai phần tử thứ i − 1 và i của dòng thứ k − 1 (k ≤ n)

- Lập trình cụ thể

Program Tim tam giac Pascal;

Var

Trang 16

[B1] Nhập hai số nguyên dương cần tìm UCLN, BCNN a và b.

[B2] Giả sử a > b Thực hiện phép chia a cho b, ta được số dư r Tiếptục thực hiện phép chia b cho r, ta được số dư r1 Rồi lại chia r cho r1 Quá trình này sẽ kết thúc ở bước thứ i nào đó với số dư ri−1 = 0 Khi

đó, UCLN(a, b) = ri−2 và BCN N(a, b) = a ∗ b div U CLN(a, b)

Writeln(’BCNN(’,a,’ ,’,b,’) = ’,a*b DIV UCLN(a,b),’.’);

Writeln(’Nhan Enter de ket thuc chuong trinh.’);

Trang 17

2.2.11 Thuật toán tìm tất cả các số nguyên tố trong một dãy

số nguyên dương nhập vào từ bàn phím

If (1 < n) and (n <=100) then break;

Writeln(’Khong hop le vi 1 < n <= 100 Moi ban nhap lai: ’);

Until false;

Writeln(’ Nhap vao n phan tu cua day(ai >= 1):’);

For i := 1 to n do

Trang 18

Write(’a’,i,’= ’);

Repeat

Readln(a[i]);

If 1<= a[i] then break;

Writeln(’Khong hop le vi ai >= 1 Moi ban nhap lai:’);

If ngto(a[i]) then writeln(’a’,i,’= ’,a[i])

Else kiemtranguyento := kimtranguyento + 1;

2.2.12 Thuật toán tìm ước chung lớn nhất của tất cả các phần

tử trong một dãy số nguyên dương nhập từ bàn phím

- Lập trình cụ thể

Program Tim UCLN cua tat ca cac phan tu trong mot day so nguyen

Ngày đăng: 15/12/2015, 07:09

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Phạm Huy Điển (2002), Tính toán, lập trình và giảng dạy toán học trên Maple, Nhà xuất bản Khoa học và Kỹ thuật, Hà Nội Sách, tạp chí
Tiêu đề: Tính toán, lập trình và giảng dạy toán học trên Maple
Tác giả: Phạm Huy Điển
Nhà XB: Nhà xuất bản Khoa học và Kỹ thuật
Năm: 2002
[3] Lê Tuấn Hoa (2003), Đại số máy tính - Cơ sở Grobner, Nhà xuất bản Đại học Quốc gia, Hà Nội Sách, tạp chí
Tiêu đề: Đại số máy tính - Cơ sở Grobner
Tác giả: Lê Tuấn Hoa
Nhà XB: Nhà xuất bản Đại học Quốc gia
Năm: 2003
[5] Phan Huy Khải (2006), Các chuyên đề bồi dưỡng học sinh giỏi toán trung học, Nhà xuất bản Giáo dục, Hà Nội Sách, tạp chí
Tiêu đề: Các chuyên đề bồi dưỡng học sinh giỏi toán trung học
Tác giả: Phan Huy Khải
Nhà XB: Nhà xuất bản Giáo dục
Năm: 2006
[7] Hà Huy Khoái, Phan Huy Điển (2003), Số học thuật toán, Nhà xuất bản Đại học Quốc gia Hà Nội Sách, tạp chí
Tiêu đề: Số học thuật toán
Tác giả: Hà Huy Khoái, Phan Huy Điển
Nhà XB: Nhà xuất bản Đại học Quốc gia Hà Nội
Năm: 2003
[10] D.M.Burton (2002), Elementary Number Theory, Tata McGraw-Hill Company, New Delhi Sách, tạp chí
Tiêu đề: Elementary Number Theory
Tác giả: D.M. Burton
Nhà XB: Tata McGraw-Hill Company
Năm: 2002
[11] S.G.Telang (2001), Number Theory, Tata McGraw-Hill Company, New Delhi Sách, tạp chí
Tiêu đề: Number Theory
Tác giả: S.G.Telang
Nhà XB: Tata McGraw-Hill Company
Năm: 2001
[2] Ngô Minh Đức (2008), Chuyên đề thuật toán số học, VNOI Olimpic Tin học Quốc gia Hà Nội Khác
[4] Doãn Tam Hòe (2008), Toán học tính toán, Nhà xuất bản Giáo dục, Hà Nội Khác
[6] Hà Huy Khoái (2004), Chuyên đề bồi dưỡng học sinh giỏi toán trung học phổ thông, Nhà xuất bản Giáo dục, Hà Nội Khác
[8] Quách Tuấn Ngọc (2001), Ngôn ngữ lập trình Pascal, Nhà xuất bản Thống kê, Hà Nội Khác
[9] Đàm Văn Nhỉ, Lưu Bá Thắng, Nguyễn Việt Hải (2006), Số học, Nhà xuất bản Đại học Sư phạm Hà Nội.Tiếng Anh Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w