Xin chào và chào mừng.
Tôi muốn cung cấp một trình diễn một giải
pháp cho thách thức trước đây của chúng tôi là viết một chương trình tạo
ra các số nguyên tố.
Và một lần nữa, toàn bộ vấn đề của chương trình này là sử dụng một mảng, bạn
muốn tìm hiểu tất cả về mảng và thực hiện bằng cách thực hiện điều này.
Vì vậy, tôi đã cố gắng mô tả thuật toán số nguyên tố trước đây.
Nhưng chỉ cần đề cập lại, bạn có thể kiểm tra xem một số nguyên tố
có phải là một số nguyên tố hay không.
Số nguyên tố nó có nghĩa là uh nó không chia hết cho
bất kỳ số nguyên tố nào khác.
Vì vậy, đó là thuật toán khái niệm mà chúng ta sẽ đi qua.
Và lý do đó là lý do tại sao nó một số nguyên tố là vì bất kỳ số nguyên không phải nguyên tố nào
cũng có thể được biểu diễn như một bội số của các thừa số nguyên tố.
Vì vậy, ví dụ 20 có thừa số nguyên tố 2 2 và 5.
Vì vậy, bằng cách biết điều này, điều này cho bạn biết số nguyên tố đó không chia hết cho
bất kỳ số nguyên tố nào khác.
Vì vậy, điều này có thể giúp tạo ra một kiểm tra số nguyên tố hiệu quả.
Vì vậy, những gì bạn có thể làm là bạn có thể kiểm tra
các số nguyên tố đã tạo trước đó.
Vì vậy, chúng tôi có thể lưu trữ đã tạo
các số nguyên tố trong một mảng và đó là cách chúng tôi có thể tìm thấy thông tin này.
Ngoài ra, bất kỳ 9 số nguyên nguyên tố n phải có một trong các yếu tố của nó là
một số nguyên nhỏ hơn hoặc bằng căn bậc hai của n.
Vì vậy, điều này có nghĩa là nó chỉ cần thiết để xác định xem một số nguyên đã cho có
phải là số nguyên tố hay không bằng cách kiểm tra xem nó có chẵn không chia hết cho tất cả các thừa số
nguyên tố đến căn bậc hai của số nguyên.
Vì vậy, bạn có thể dừng ngay tại đó và một lần nữa nó làm cho nó hiệu quả hơn.
Điều này sẽ được chú ý trong vòng lặp bên trong của tôi khi tôi nhảy
ra ngoài để xác định xem tôi có chưa tìm thấy số nguyên tố.
Tôi sẽ nhảy ra ngoài nếu tôi đến căn bậc hai của số nguyên, về cơ bản nó
là một điều kiện thoát.
Vì vậy, chúng ta hãy xem xét và cách mà bạn có
thể kiểm tra đó là bạn chỉ cần nói p chia cho các số nguyên tố lớn hơn I nguyên tố và chúng tôi sẽ sử dụng điều đó
trong vòng lặp trong cùng để Kiểm tra xem giá trị của p có vượt quá căn bậc hai
của số nguyên tố I hay không.
Vì vậy, hãy tiếp tục và đưa ra mã các khối để bắt đầu viết một số mã.
Chúng ta sẽ làm những điều cơ bản ở đây, tạo một dự án.
Chúng tôi sẽ đặt tên cho dự án của chúng tôi là số nguyên tố.
Vì vậy, chúng ta hãy
đi đến dự án mới, và chúng ta hãy đi đến ứng dụng bảng điều khiển.
Và chúng tôi sẽ đặt tên cho nó là số nguyên tố.
Nói tiếp theo, chúng tôi sẽ không đi để sử dụng trình biên dịch này.
Tôi đã chơi xung quanh với trình biên dịch Tôi muốn đảm bảo rằng tôi có trình
biên dịch phù hợp mà tôi sẽ chỉ cần sử dụng trình biên dịch cygwin.
Vì vậy, nó tạo ra tệp nguồn và nó trống.
Hãy loại bỏ printf và bắt đầu viết một số mã.
Chúng tôi sẽ bao gồm một tệp được gọi là bò chuẩn.
Tôi vẫn chưa làm điều này; Tôi đã từng tạo Boolean của tôi dưới dạng dấu gạch dưới.
Hãy làm một bài kiểm tra nhỏ, Tôi muốn có thể làm bool.
Vì vậy, bây giờ chúng ta có thể sử dụng bools.
Vì vậy, thông thường trong C89, kiểu dữ liệu cho true hoặc false là bool gạch dưới.
Nhưng bạn thực sự có thể có một loại định nghĩa trong các phiên bản mới hơn và trong tệp
bool tiêu chuẩn để chỉ sử dụng bools và cũng cho phép bạn
sử dụng true false làm giá trị.
Vì vậy, chúng tôi phải tạo một số biến ở đây đầu tiên.
Chúng tôi sẽ tạo bộ đếm của mình mà chúng tôi sẽ đặt tên cho p.
Đó sẽ là quầy của chúng tôi cho vòng lặp của chúng tôi từ
khi chúng tôi kiểm tra từ p đến 100 số.
Đó sẽ là vòng lặp bên ngoài của chúng tôi.
Chúng tôi cũng sẽ tạo ra một biến cho bộ đếm vòng lặp bên trong của chúng tôi.
Đây là nơi chúng tôi kiểm tra các số nguyên tố trước của chúng ta.
Trên thực tế, chúng tôi sẽ không khởi tạo nó ở đây chúng tôi sẽ khởi tạo nó trong vòng lặp.
Chúng tôi sẽ tạo mảng của chúng tôi sẽ là một số nguyên của các số
nguyên tố và nó sẽ có kích thước là 50.
Và chúng tôi sẽ không khởi tạo nó thành bất cứ thứ gì ngoại trừ 0 cho bây giờ.
Và sau đó chúng tôi sẽ tạo ra một chỉ số nguyên tố và
điều này sẽ giúp chúng tôi bỏ qua tất cả các số chẵn và chúng tôi sẽ đặt nó thành 2.
Biến này đang thực sự để đảm bảo rằng chúng tôi
bắt đầu ở chỉ mục chính xác vì chúng tôi sẽ để mã cứng 2 số đầu tiên.
Đó là những gì chúng tôi sẽ làm đầu tiên.
Chúng ta sẽ viết mã khó 2 số nguyên tố đầu tiên của chúng ta.
Vì vậy, đây là cách chúng ta có thể truy cập vào mảng.
Chúng tôi biết cách tạo một mảng trong dòng 10, bạn chỉ cần chỉ định kiểu dữ liệu
theo sau là tên và sau đó trong dấu ngoặc vuông chúng tôi chỉ định kích thước.
Và sau đó chúng tôi đang khởi tạo mọi thứ về 0, đây là đặc
điểm C99 mà chúng tôi có thể làm.
Và để gán dữ liệu cho một mảng, Tôi chỉ có thể nói tên mảng và sau đó
là giá trị chỉ mục.
Hãy nhớ rằng, mảng dựa trên 0.
Vì vậy, tôi sẽ nói con số 0 nguyên tố.
Và số nguyên tố đầu tiên sẽ là 2.
2 là số nguyên tố đầu tiên.
Số nguyên tố thứ hai là sẽ bằng 3.
Bằng cách này, tôi có một số nguyên tố các số
mà trước đây tôi có thể kiểm tra để tìm các số nguyên tố bổ sung.
Và bây giờ là vòng lặp của chúng tôi.
Chúng tôi sẽ cần bên ngoài cho vòng lặp đi qua tất cả
các số từ 5 đến 100.
Chúng ta biết 4 không phải là số nguyên tố vì vậy tôi chỉ mới bắt đầu ở tuổi 5.
Vì vậy, chúng ta có thể nói 4 p bằng 5, p là nhỏ hơn hoặc bằng 100 và sau đó chúng ta
sẽ bỏ qua số chẵn.
Vì vậy, chúng tôi sẽ nói p bằng p cộng với 2.
Chúng ta không cần xem xét bất kỳ con số nào, đó sẽ là vòng lặp bên ngoài của chúng tôi.
Và một lần nữa, bạn nên thử nghiệm như bạn đang đi.
Bây giờ chúng tôi cũng sẽ thiết lập lên một biến Boolean sẽ cho chúng ta biết có hay không chúng
tôi đã tìm thấy một số nguyên tố.
Vì vậy, đây là nơi tôi có thể sử dụng bool, và tôi sẽ chỉ
tạo một biến cục bộ Boolean là số nguyên tố.
Tôi sẽ khởi tạo nó nói là đúng bởi vì tôi sẽ chỉ đặt nó thành sai nếu
tôi xem qua toàn bộ danh sách các số nguyên tố
đã tạo trước đó hoặc Tôi đã đến số nguyên tố mới nhất và đảm bảo rằng nó không phải
là căn bậc hai.
Vì vậy, nguyên tố sẽ là bằng true cho mỗi lần
lặp từ 5 đến 100 bỏ qua 2.
Bây giờ vòng lặp bên trong của tôi sẽ đi thông qua tất cả các số nguyên tố mà
chúng tôi đã tạo trước đó.
Làm cho chúng ta chưa tiến xa hơn hơn căn bậc hai của I.
Vì vậy, chúng ta sẽ đi qua tất cả các số cho đến khi chúng ta nhận được căn bậc hai, đó có thể là
điều kiện x của chúng ta.
Chúng tôi cũng sẽ thoát ra nếu chúng tôi tìm thấy một số nguyên tố.
Vì vậy, chúng tôi sẽ nói nếu là nguyên tố là đúng và chúng tôi
đã vượt qua giới hạn của mình, điều này sẽ là p chia cho số nguyên tố phụ I lớn
hơn hoặc bằng số nguyên tố phụ I.
Và sau đó chúng ta sẽ cộng thêm Tôi là biến điều khiển vòng lặp của chúng tôi.
Đây thực sự là chìa khóa của thuật toán.
Vì vậy, chúng tôi sẽ cố gắng tìm tất cả các số
nguyên tố của chúng ta từ 5 đến 100 bỏ qua các số chẵn.
Và sau đó trong vòng lặp bên trong của chúng tôi, chúng tôi
sẽ bắt đầu từ 1, chúng tôi sẽ đi hết chặng đường cho đến khi chúng tôi đặt là nguyên tố đúng hoặc chúng ta đã đạt đến
điều kiện thoát, đó là số p chia cho I nguyên tố lớn hơn I nguyên tố, và đó là về
cơ bản kết thúc để làm cho chúng ta khi chúng ta tìm thấy một căn bậc hai vì
đó là một điều kiện khác của thuật toán.
Nếu đó là vòng lặp của chúng tôi, bên trong trong vòng lặp của chúng tôi, chúng tôi
sẽ thực sự kiểm tra các số nguyên tố.
Cách một số là số nguyên tố là bạn chia nó cho một số.
Và nếu bạn không có 0, sau đó bạn tốt để đi.
Vì vậy, bạn chỉ có thể thực hiện một mod p nguyên tố phụ I bằng 0.
Và nếu điều đó là đúng, thì bạn
không có số nguyên tố.
Vì vậy, bạn có thể đặt Boolean bằng false.
Và sau đó đó là những gì chúng tôi làm cho toàn bộ vòng lặp bởi vì tất cả
những gì chúng tôi đang làm là chúng tôi sẽ để đặt Boolean thành false.
Và điều đó sẽ cho chúng tôi biết rằng chúng tôi đã không tìm một số nguyên tố, vì vậy
chúng tôi không muốn thêm p vào mảng số nguyên tố.
Được rồi, điều cuối cùng cần làm là chúng ta chỉ kiểm tra xem Boolean đã được đặt thành true chưa, nếu
nó được đặt thành true, thì chúng ta muốn điền vào mảng của mình.
Chúng tôi muốn thêm nó vào mảng. Vì vậy đã thêm vào các mảng mà chúng tôi thấy là số nguyên tố.
Vì vậy, chúng tôi chỉ nói số nguyên tố và thì chúng ta nói chỉ số nguyên tố.
Bởi vì, hãy nhớ rằng, đây là một trong những điều đó thực sự được đại diện bởi
chỉ mục cho nơi chúng tôi muốn đưa vào mảng mà chúng ta muốn bắt đầu ở phần tử 3
là chỉ số 2.
Vì vậy, chúng tôi muốn đảm bảo rằng chúng tôi đã đưa nó vào vị trí bên phải
trong mảng và chúng tôi chỉ đặt nó thành p vì p là số nguyên tố chúng tôi tìm thấy vì hãy nhớ đây là vòng lặp for bên ngoài.
Chúng tôi đang cố gắng kiểm tra xem đó là một số nguyên tố.
Chúng tôi bắt đầu lúc 5 giờ.
Chúng tôi nói nếu 5 sẽ là số nguyên tố, nếu chúng ta có thể đi đến những con số này bắt đầu từ 1 và sau đó
so sánh với bất kỳ các số nguyên tố trước và nếu nó không chia hết cho 0, thì
chúng ta tốt và chúng ta phải làm điều đó cho mọi thứ.
Và điều cuối cùng chúng ta muốn làm là chúng ta chỉ
muốn tăng chỉ số nguyên tố đó.
Vì vậy, trong lần tiếp theo chúng ta tìm thấy một số nguyên tố số, chúng tôi đang ở đúng chỉ mục.
Và đó là nó.
Và đây là toàn bộ thuật toán tìm số nguyên tố.
Vì vậy, bạn muốn lưu điều đó và xây dựng nó, đảm bảo rằng mọi thứ đều tốt.
Là tốt.
Vì vậy, tôi thích thêm true false giá trị bằng cách bao gồm bool tiêu
chuẩn, đừng quên điều đó.
Và điều cuối cùng chúng ta phải làm là chúng ta chỉ cần in
ra các số nguyên tố.
Vì vậy, chúng ta chỉ có thể có một vòng lặp for đơn giản.
Và chúng tôi sẽ in chúng tất cả trên cùng một dòng, vì vậy chúng tôi sẽ không
thêm một nguồn cấp dữ liệu dòng.
Vì vậy, những gì chúng tôi sẽ làm là chúng ta sẽ khởi tạo
lại biến điều khiển vòng lặp của chúng ta thành 0 I.
Chúng tôi sẽ đi đến tất cả các con đường của chúng tôi chỉ số nguyên tố, sẽ
là kích thước của mọi thứ trong mảng và chỉ cần in nó ra trong một dòng
duy nhất, phần trăm I hoặc d và con số I nguyên tố.
Và cuối cùng, chúng tôi sẽ thêm một nguồn cấp dữ liệu dòng.
Một cái gì đó tương tự với dấu chấm phẩy.
Nhưng một lần nữa, những điều để thông báo trong chương trình này.
Đầu tiên, hãy chú ý đến phần thụt lề, tất cả các khối được thụt vào.
Đôi khi chúng tôi sử dụng dấu ngoặc khi chúng tôi có nhiều hơn một câu lệnh bên
trong các khối của chúng tôi, đôi khi chúng tôi không có.
Trong câu lệnh if này trên dòng 25, chúng tôi không sử dụng bất kỳ dấu ngoặc nào.
Đối với vòng lặp nên trở thành phần nào bản chất thứ hai cho đến nay.
Thực sự những gì bạn muốn đạt được từ sự gán này là các mảng.
Vì vậy, chúng tôi đang tạo một mảng được gọi là số nguyên tố, thiết lập kích thước 50, khởi tạo mọi thứ thành 0.
Và sau đó chúng tôi thiết lập 2 phần tử thành 2
và 3 và sau đó toàn bộ thuật toán này từ 19 thành dòng 32 xác định xem nó có phải là
số nguyên tố hay không bằng cách nhìn vào mảng trong các số nguyên tố trước đó.
Và cũng nhảy ra ngoài khi bạn lớn hơn căn bậc hai.
Và một lần nữa bạn thấy rất nhiều dấu ngoặc vuông ở đây để truy cập
mảng và gán giá trị đối với mảng và mọi
thứ, nó khá đơn giản.
Vì vậy, hãy xây dựng cái này và hãy xem chuyện gì xảy ra.
Chúng tôi không có cảnh báo, không có lỗi.
Nếu chúng tôi chạy điều này, những gì bạn thấy là đầu ra là tất cả các
số nguyên tố đến 100 2 3 5 7 11 13 17 19 23 29 31 37 41 43, v.v.
Đó là tất cả các số nguyên tố.
Và số nguyên tố là một cái gì đó chỉ là một yếu tố của chính nó.
Bạn không thể chia nó cho bất kỳ cái nào khác số và không có phần dư.
Vì vậy, 97 chỉ có 2 yếu tố đi vào đó là 1 và 97.
Vì vậy, một lần nữa một chương trình nhanh nhỏ tốt đẹp.
Tôi sẽ cung cấp giải pháp.
Bạn có thể phân tích nó.
Nhưng một lần nữa, tất cả mọi thứ chính đều về các mảng và cả bool tiêu chuẩn mà
tôi đã sử dụng, cho phép chúng tôi tạo các kiểu dữ liệu
Boolean mà không có gạch dưới viết hoa b và cũng cho phép bạn
sử dụng các giá trị true false thay vì 1 và 0.
Hi vọng điêu nay co ich. Cảm ơn bạn.