Halo dan selamat datang.
Saya ingin memberikan mendemonstrasikan solusi
untuk tantangan kami sebelumnya yang adalah menulis program yang
menghasilkan bilangan prima.
Dan sekali lagi, intinya dari program ini adalah menggunakan array, Anda
ingin mempelajari semuanya tentang array dan lakukan dengan melakukan ini.
Jadi saya mencoba menggambarkan algoritma bilangan prima sebelumnya.
Tapi untuk menyebutkannya lagi, Anda dapat memeriksa apakah suatu bilangan prima
adalah bilangan prima atau tidak.
Bilangan prima artinya eh itu tidak habis dibagi
dengan bilangan prima lainnya.
Jadi itulah gagasan algoritma yang akan kita lewati.
Dan alasan itulah mengapa bilangan prima adalah karena setiap bilangan bulat
non-prima dapat dinyatakan sebagai kelipatan faktor prima.
Jadi misalnya 20 memiliki faktor prima 2 2 dan 5.
Jadi dengan mengetahui ini, ini memberitahumu bahwa bilangan prima tidak habis dibagi
dengan bilangan prima lainnya.
Jadi ini bisa membantu membuat sangat tes bilangan prima yang efisien.
Jadi yang bisa kamu lakukan adalah kamu dapat memeriksa
bilangan prima yang dihasilkan sebelumnya.
Jadi kita bisa menyimpan kita sebelumnya
menghasilkan bilangan prima dalam array, dan begitulah cara kami dapat menemukan informasi ini.
Juga setiap 9 bilangan bulat prima n harus memiliki sebagai salah satu faktornya bilangan bulat yang
kurang dari atau sama dengan akar kuadrat dari n.
Jadi ini berarti hanya perlu untuk menentukan apakah bilangan bulat yang diberikan
adalah prima dengan mengujinya untuk genap dapat dibagi terhadap semua faktor prima hingga
akar kuadrat dari bilangan bulat.
Jadi Anda bisa berhenti di sana dan lagi itu membuatnya lebih efisien.
Ini akan terlihat di lingkaran dalam saya ketika saya melompat
keluar untuk menentukan apakah saya belum menemukan bilangan prima.
Saya akan melompat keluar jika saya sampai akar kuadrat dari bilangan bulat, itu adalah
kondisi keluar pada dasarnya.
Jadi mari kita lalui dan jalannya yang dapat
Anda periksa adalah Anda hanya mengatakan p dibagi dengan bilangan prima lebih besar dari prime sub-I, dan kami akan
menggunakannya di loop terdalam untuk menguji apakah nilai p melebihi akar kuadrat
dari bilangan prima I.
Jadi mari kita lanjutkan dan memunculkan kode blok untuk mulai menulis beberapa kode.
Kami akan melakukan dasar-dasarnya di sini, buat proyek.
Kami akan memberi nama proyek kami yang disebut bilangan prima.
Jadi mari kita
pergi ke proyek baru, dan mari kita pergi ke aplikasi konsol.
Dan kita akan menamakannya bilangan prima.
Katakan selanjutnya, kita tidak akan pergi untuk menggunakan kompiler ini.
Aku sedang bermain-main dengan kompiler Saya ingin memastikan saya memiliki
kompiler yang tepat, saya akan cukup gunakan kompiler cygwin.
Jadi itu menghasilkan utama saya file sumber, dan itu kosong.
Mari kita singkirkan printf dan mulai menulis beberapa kode.
Kami akan menyertakan a file bernama banteng standar.
Saya belum melakukan ini; Saya telah membuat Boolean saya sebagai garis bawah.
Mari kita lakukan tes kecil, Saya ingin bisa melakukan bool.
Jadi sekarang kita bisa menggunakan bools.
Jadi biasanya di C89, tipe datanya untuk benar atau salah adalah garis bawah bool.
Tetapi Anda benar-benar dapat memiliki tipe definisi di versi yang lebih baru dan dalam file
bool standar untuk cukup gunakan bools dan juga memungkinkan Anda
untuk menggunakan true false sebagai nilai.
Jadi kita harus membuat beberapa variabel di sini dulu.
Kami akan membuat penghitung kami yang akan kita beri nama p.
Itu akan menjadi counter kami untuk loop kami dari saat
kami memeriksa dari p hingga 100 angka.
Itu akan menjadi lingkaran luar kita.
Kami juga akan membuat variabel untuk penghitung loop dalam kita.
Di sinilah kami memeriksa bilangan prima kita sebelumnya.
Sebenarnya, kami tidak akan menginisialisasinya di sini kita akan menginisialisasi dalam loop.
Kami akan membuat array kami yang akan menjadi bilangan bulat bilangan
prima dan itu akan menjadi ukuran 50.
Dan kami tidak akan menginisialisasi untuk apa pun kecuali 0 untuk saat ini.
Dan kemudian kita akan membuat indeks prima, dan ini
akan membantu kita melewati semua bilangan genap, dan kita hanya akan mengaturnya menjadi 2.
Variabel ini benar-benar pergi untuk memastikan kita memulai
dengan indeks yang benar karena kita akan pergi untuk mengkodekan 2 angka pertama.
Itu yang akan kita lakukan dulu.
Kami akan membuat kode keras 2 bilangan prima pertama kita.
Jadi ini adalah bagaimana kita dapat mengakses array.
Kami tahu cara membuat array sejalan 10, Anda tinggal menentukan tipe data
diikuti dengan nama dan kemudian di kurung siku kita tentukan ukurannya.
Dan kemudian kami menginisialisasi semuanya ke 0, ini adalah sifat
C99 yang bisa kita lakukan.
Dan untuk menetapkan data ke array, Saya hanya bisa mengatakan nama array
dan kemudian nilai indeks.
Ingat, array berbasis 0.
Jadi saya akan mengatakan prime sub-0.
Dan bilangan prima pertama akan menjadi 2.
2 adalah bilangan prima pertama.
Bilangan prima kedua adalah akan sama dengan 3.
Dengan cara ini saya memiliki beberapa prime
angka yang sebelumnya dapat saya uji untuk menemukan bilangan prima tambahan.
Dan sekarang datang perulangan kami.
Kita akan membutuhkan luar untuk loop yang melewati semua
angka dari 5 sampai 100.
Kita tahu 4 bukan bilangan prima jadi saya baru mulai dari 5.
Jadi kita dapat mengatakan 4 p sama dengan 5, p adalah kurang dari atau sama dengan 100 dan kemudian kita
akan melewatkan angka genap.
Jadi kita akan mengatakan p sama dengan p ditambah 2.
Kita tidak perlu mencari angka apapun, itu akan menjadi lingkaran luar kita.
Dan lagi, kamu seharusnya pengujian saat Anda pergi.
Sekarang kita juga akan mengatur up variabel Boolean yang akan memberitahu kita apakah atau
tidak kami menemukan bilangan prima.
Jadi di sinilah saya bisa menggunakan bool, dan saya hanya
akan membuat variabel lokal Boolean is prime.
Saya akan menginisialisasi itu untuk mengatakan itu benar karena saya hanya akan menyetelnya menjadi
salah jika saya sudah menelusuri seluruh daftar bilangan
prima yang dihasilkan sebelumnya atau Saya harus menggunakan bilangan prima terbaru dan memastikan itu bukan
akar kuadrat.
Jadi prime akan menjadi sama dengan true untuk setiap iterasi
dari 5 hingga 100 skipping 2.
Sekarang lingkaran dalam saya akan pergi melalui semua bilangan prima kita yang telah
kita hasilkan sebelumnya.
Buat kita belum menjadi lebih besar dari akar kuadrat dari I.
Jadi kita akan melalui semuanya angka-angka sampai kita mendapatkan akar kuadrat, itu bisa menjadi
kondisi x kita.
Kami juga akan keluar jika kita menemukan bilangan prima.
Jadi kita akan mengatakan jika prima benar dan kami telah melewati
batas kami, yang akan menjadi p dibagi dengan prima sub-I lebih besar dari atau
sama dengan bilangan prima sub-I.
Dan kemudian kita akan ditambah plus I adalah variabel kontrol loop kami.
Ini benar-benar kunci dari algoritma.
Jadi kita akan mencoba untuk temukan semua bilangan
prima kami dari 5 hingga 100 dengan melewatkan angka genap.
Dan kemudian di lingkaran dalam kita, kita akan
mulai dari 1, kita akan pergi jauh-jauh sampai kita mengaturnya prima ke true atau kita telah mencapai kondisi
keluar kita, yaitu bilangan p dibagi prima sub-I lebih besar dari prima sub-I, dan
itu dasarnya berakhir untuk membuat kami ketika kami menemukan akar kuadrat karena
itu kondisi lain dari algoritma.
Jika itu lingkaran kami, di dalam loop kami, kami akan
benar-benar memeriksa bilangan prima.
Cara bilangan prima adalah Anda membaginya dengan nomor.
Dan jika Anda tidak memiliki 0, maka Anda baik untuk pergi.
Jadi Anda bisa melakukan p mod prima sub-I sama dengan 0.
Dan jika itu benar, maka Anda
tidak memiliki bilangan prima.
Jadi Anda dapat mengatur Boolean sama dengan salah.
Dan kemudian itulah yang kami lakukan untuk seluruh loop karena yang
kita lakukan hanyalah pergi untuk mengatur Boolean ke false.
Dan itu akan memberi tahu kami bahwa kami tidak melakukannya temukan bilangan prima, jadi kita
tidak ingin menambahkan p ke array bilangan prima kita.
Oke, jadi hal terakhir yang harus kita lakukan adalah periksa apakah Boolean disetel ke true,
jika disetel ke true, maka kami ingin mengisi array kami.
Kami ingin menambahkannya ke array. Jadi kita menambahkan ke array yang kita temukan prima.
Jadi kami hanya mengatakan bilangan prima dan maka kita katakan indeks utama.
Karena, ingat, ini dia itu benar-benar diwakili oleh indeks di mana
kita ingin memasukkannya array, yang ingin kita mulai dari elemen 3 yaitu
indeks 2.
Jadi kami ingin memastikan kami memasukkannya tempat yang tepat dalam array, dan
kami hanya mengaturnya ke p karena p adalah bilangan prima yang kami menemukan karena ingat ini adalah loop for luar.
Kami mencoba memeriksa apakah itu bilangan prima.
Kita mulai jam 5.
Kami mengatakan jika 5 akan menjadi prima, jika kita bisa pergi ke angka-angka ini mulai dari 1 dan kemudian membandingkannya
dengan apapun bilangan prima sebelumnya dan jika tidak habis dibagi 0, maka kita
baik-baik saja dan kita harus melakukan itu untuk semuanya.
Dan kemudian hal terakhir yang kita ingin kita lakukan adalah kita
hanya ingin menaikkan indeks utama itu.
Jadi lain kali kita menemukan bilangan prima nomor, kami berada di indeks yang tepat.
Dan itu saja.
Dan ini keseluruhannya algoritma untuk mencari bilangan prima.
Jadi Anda ingin menyimpannya dan membangun itu, pastikan semuanya baik-baik saja.
Kami baik-baik saja.
Jadi saya suka menambahkan true false nilai dengan memasukkan bool
standar, jangan lupakan itu.
Dan kemudian hal terakhir yang kita yang harus kita lakukan adalah kita
hanya perlu mencetak bilangan prima.
Jadi kita hanya bisa memiliki loop for sederhana.
Dan kami akan mencetaknya semua di baris yang sama, jadi kami tidak
akan menambahkan umpan baris.
Jadi yang akan kita lakukan adalah kita akan menginstansiasi
ulang variabel kontrol loop kita ke 0 I.
Kami akan pergi jauh-jauh ke tempat kami indeks utama, yang akan menjadi
ukuran semua yang ada di array dan cetak saja dalam satu
baris, persen I atau d dan prime sub-I.
Dan kemudian di bagian paling akhir, kami akan menambahkan umpan baris.
Sesuatu seperti itu dengan titik koma.
Tapi sekali lagi, hal yang harus perhatikan dalam program ini.
Pertama, perhatikan lekukan, semua blok menjorok.
Kami terkadang menggunakan tanda kurung saat kami memiliki lebih dari satu
pernyataan di dalam blok kita, terkadang tidak.
Dalam pernyataan if ini on line 25, kami tidak menggunakan tanda kurung.
Untuk loop harus menjadi agak sifat kedua sekarang.
Benar-benar apa yang ingin Anda dapatkan dari tugas ini adalah array.
Jadi kita membuat larik yang disebut bilangan prima, atur ukurannya 50, inisialisasi semuanya ke 0.
Dan kemudian kita mengatur yang pertama 2
elemen ke 2 dan 3 dan kemudian seluruh algoritma ini dari 19 ke baris 32
menentukan apakah itu prima dengan melihat array pada bilangan prima sebelumnya.
Dan juga melompat keluar saat kamu lebih besar dari akar kuadrat.
Dan sekali lagi Anda melihat banyak tanda kurung siku di sini untuk
mengakses array dan menetapkan nilai untuk array dan
segalanya, itu cukup mudah.
Jadi mari kita membangun ini dan lihat apa yang terjadi.
Kami tidak memiliki peringatan, tidak ada kesalahan.
Jika kami menjalankan ini, apa yang Anda lihat outputnya adalah semua bilangan prima ke
100 2 3 5 7 11 13 17 19 23 29 31 37 41 43 dan seterusnya.
Itu semua bilangan prima.
Dan bilangan prima adalah sesuatu yang hanya hanya faktor itu sendiri.
Anda tidak dapat membaginya dengan yang lain nomor dan tidak memiliki sisa.
Jadi 97 hanya 2 faktor yang masuk ke itu adalah 1 dan 97.
Jadi sekali lagi program cepat kecil yang bagus.
Saya akan memberikan solusinya.
Anda dapat menganalisisnya.
Tapi sekali lagi takeaways utama, semuanya tentang array dan juga bool standar yang saya
gunakan, itu memungkinkan kami untuk membuat tipe data Boolean tanpa
modal garis bawah b dan juga memungkinkan Anda untuk menggunakan nilai
true false sebagai lawan dari 1 dan 0.
Semoga ini membantu. Terima kasih.