PDA

View Full Version : [DIS] Đề thi VB khác



KEM_WALL
24-06-2003, 20:43
kô biết ý kiến mọi người về đề này như thế nào. góp ý dùm nhá

Cho trước số n, hãy viết chương trình in ra toàn bộ số nguyên tố từ 2 -> n

walls nghĩ có thể 1 số bạn sẽ cười, cho rằng đề kô hay...
nhưng thật ra khi bạn bắt tay vào làm, cố gắng tìm ra thuật toán để giải bài toán này nhanh nhất thì bạn sẽ thấy đây là 1 đề hay đấy...
walls cũng mất gần 1 tháng suy nghĩ đã đời và tìm ra 1 cách giải khá hay (nhưng chưa chắc là nhanh nhất)

nào các bạn, chúng ta vào cuộc chứ ;)

Asus
25-06-2003, 09:29
Ái, lại thêm một đề nữa hả. Sao ở đâu ra mà lắm đề vậy nè. Hehe, nói chơi vậy thôi chứ cái đề của bạn cũa được đấy. Hãy khởi động đi nhé, chuẩn bị cho cuộc thi chính thức xắp tới nhé.

LMTruong
25-06-2003, 18:55
Coi thu giai thuat cua tui nha

Dim SNT as Boolean

For i=2 to n

SNT=True
For j = 2 to i
If i Mod j = 0 and j<i then
SNT=False
Exit For
End If
Next j
If SNT = True Then ' In so nguyen to ra
Next i

Hong biet co dung hong nha, mi`nh chua co test lai. He he.

quangvu
25-06-2003, 19:26
Hãy in ra các số nguyên tố từ 1 đến 10000000000000000000000000000000000000000 (40 số 0) :)
Chúc thành công .

xeko
25-06-2003, 22:55
có DỞ hơi, ko, rỗi hơi.

Nicky
26-06-2003, 19:15
Cách của LMTruong chắc là cách mà ...

có DỞ hơi, ko, rỗi hơi.

Sao nói kỳ vậy. Số nguyên tố là một bài toán lớn của CNTT đấy, bạn đừng xem thường nó.

lightz
27-06-2003, 10:42
nói thẳng nhé, walls thấy đề viết chương trình play nốt nhạc rất khó chấm về coding, chỉ cần 1 chút suy nghĩ, và lên trang allapi tìm hiểu về hàm midi____ là xong, walls nêu cụ thể hàm luôn rồi đấy. walls thấy các bạn chỉ có thể hơn thui nhau về mặt giao diện thui, còn coding thì khó biết ai hơn ai ...

vì thế walls mới đưa ra đề về số nguyên tố, đề này lấp đầy lỗ trống của đề cũ về mặt thuật toán ...

cuối cùng walls kiến nghị lên Asus là cho thi cả 2 bài, gộp lại thành 1 đề có 2 câu hỏi, mỗi câu vậy 50 điểm

bài 1 (nốt nhạc) sẽ chú trọng phần đồ hoạ (30 điểm), coding 10 điểm, và những tính năng thêm (10 điểm
bài 1 (nguyên tố) sẽ chú trọng phần thuật toán (35 điểm), đồ hoạ 5 điểm, những tính năng thêm (10 điểm)

to xeko:
nếu muốn, bạn chỉ tham gia làm bài nốt nhạc thui ...

to LMTruong:
ha ha ha ... đừng buồn nhá ;), thuật toán của bạn chạy bét nhất trong mấy thuật toán walls đã gặp .... cho thử số 1000000 xem nó chạy hết ... mấy tiếng

to quangvu:
số lớn thế thì kiểu biến nào làm cho nổi, hic (chắc anh đùa ;))

walls nghĩ số 1000000 (1 triệu) chắc là đủ rùi, VB6 biến kiểu long, còn VB.net thì biến int

các bạn tiếp tục cho ý kiến nhá
:rolleyes:

lightz
27-06-2003, 10:43
hic, sao bài của walls lại mang tên ai thế này

KEM_WALL
27-06-2003, 11:25
ai đó stickly cái này dùm luôn đi

White_Rose
27-06-2003, 12:41
Để làm chi vậy? Nhiều sticky quá rồi :D

KEM_WALL
27-06-2003, 16:20
có những cái stickly nên bỏ đi là vừa, stickly về clb Vb chẳng hạn, cái đó có mấy người coi đâu

attilathehun
27-06-2003, 18:15
Ugg, cái này dùng sàng Eratosen thôi mà (có điều viết bằng VB thì chỉ giới hạn N khoảng 20 000 000 thôi)

Sàng Eratosen ai mà chẳng biết

Viết toàn bộ các số từ 2 đến N

2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17

Gạch tất cả các số chia hết cho số đầu tiên (trừ chính nó - là 2), sau đó gạch tất cả các số chia hết cho số tiếp theo không bị gạch (trừ chính nó - là số 3)...
Còn những số nào không bị gạch chính là số nguyên tố

Theo như tài liệu của em thì hiện nay, để liệt kê các số nguyên tố có phạm vi nhỏ (khoảng dưới 1 tỉ) thì người ta vẫn dùng phương pháp này (có điều là đôi chút cải tiến - cải tiến thế nào thì em không biết) - có nghĩa là chưa có phương pháp nào mới...

attilathehun
27-06-2003, 18:18
Nói chung để tìm những thuật giải về toán học - các bác nên đọc sách một cách bài bản - chứ tự nghĩ ra chưa chắc đã tối ưu , người ta đã phát triển vượt qúa giới hạn tư duy của mình rồi

attilathehun
27-06-2003, 18:20
ugg đọc lại thì thấy bác WALL giới hạn có 1 000 000, thế thì ct của em vừa nhập vào nó đã ra ngay

xeko
28-06-2003, 02:51
Nếu được dung 1 cái ocx thì play nốt nhạc dễ như ăn chuối.
Nhưng ko được dùng. hu . hu

KEM_WALL
28-06-2003, 09:29
Sàng Eratosen ai mà chẳng biết

thế mà walls kô biết cái này đấy, hay có lẽ là walls ít nghiên cứu pascal wá ;)

White_Rose
28-06-2003, 16:54
- viết các số nguyên từ trái qua phải
- lấy số 2
- loại bỏ mọi số chia hết cho 2
- tìm số nhỏ nhất >2 chưa bị loại bỏ (gọi là a) -> lấy a
- loại bỏ mọi số chia hết cho a
- tìm số nhỏ nhất >a chưa bị loại bỏ (gọi là b) -> lấy b
- loại bỏ mọi số chia hết cho b
- tiếp tục cho đến khi không làm được nữa.
=> những số chưa bị loại bỏ thì là số nguyên :-)
Nếu làm khéo thì với 1.000.000 số, bạn chỉ cần một mảng với kích thước là 125.000 byte.

attilathehun
29-06-2003, 11:37
Bài viết được gửi bởi White_Rose
Nếu làm khéo thì với 1.000.000 số, bạn chỉ cần một mảng với kích thước là 125.000 byte.

Bác WR chỉ giáo cho em với

LMTruong
29-06-2003, 20:42
UI may bac chi toa`n che nguoi khac khong, tui hong thay cai thuat giai ne`o o day het, khong co 1 cai code nua. Chi toa`n la` noi. He he

White_Rose
29-06-2003, 23:39
Vì chỉ cần lưu có/không, bạn sử dụng 1 byte để lưu cho 8 số (mỗi số 1bit).
cách xác định như sau:
dim so(0 to 31249) as long
giả sử bạn cần mark số x:
vị trí của nó:
x \ 32
vị trí bít cần mark:
x mod 32 (với các bit dánh dấu là 1 ... 32)

gamehacker
30-06-2003, 11:48
Đề thi này mình thấy có cải tiến , nhưng vẫn chưa hay lắm !
Cần 1 đề nào real một chút nữa !

KEM_WALL
30-06-2003, 17:21
cái này kô phải là đề thi đâu, chỉ là vài góp ý thui :D

LMTruong muốn coi kĩ hơn nữa về cái giải thuật ấy thì mua sách giáo khoa toán lớp 6, tập 1 :D

LMTruong
05-07-2003, 20:45
He he, sach lop 6 cung co day cai na`y seo, ai biet dau, hoi do moi zo hoc lop 1 nguoi ta thay zoi we nen cho len lop 10 luon,dau co hoc lop 6 nen au co' biet.

quangthachbs
27-11-2011, 21:34
Coi thu giai thuat cua tui nha

Function SNT(Byval sn as integer) as Boolean
For i=2 to sn\2
If sn Mod i = 0 then return False
Next i
return true