Saya mempunyai soalan temu duga sehari sebelum semalam
Sila gunakan bahasa seperti js, python, java, c, c++ untuk mengira 10 bilion data dalam 10 saat, dan selesaikannya (hanya dalam masa 3 saat), nombor genap datang sebelum ini nombor ganjil
Formatnya adalah seperti berikut
1, 2, 3, 4, 5
Hasil output ialah
2, 1, 4, 3, 6, 5,
Soalan 2: Pada kod 1, adalah dikehendaki bahawa kata kunci sementara tidak boleh digunakan, bermula dari 100 Dapatkan semua nombor perdana daripada 100 juta (masa tidak boleh melebihi 3 saat)
Bagaimana untuk melakukan ini?
Saya tidak faham soalan pertama Adakah ini bermakna dua nombor adalah pasangan, dan nombor genap didahului oleh nombor ganjil?
Soalan kedua adalah mudah Jika anda tidak boleh menggunakan gelung, gunakan lelaran tatasusunan.
Sebut yang mana
php
的foreach
tidak penting (ketawaSaya rasa niat penemuduga adalah untuk meminta anda menulis fungsi rekursif? Saya rasa begitu.
Memandangkan ia tidak boleh digunakan untuk sementara waktu
Maka prestasi rekursif tidak mencukupi. . . Tetapi saya masih menggunakan beberapa. .
For Performance
Mungkin ada cara yang bijak
. . .
100亿
Saiz sepatutnya ada. Saya belum jumpa lagi.Kod
10 billion besar sikit, saya ambil 100,000 dulu
Dengan cara ini, anda boleh mendapatkan susunan nombor asli dengan panjang 100,000.
Seterusnya
Nombor genap dahulu, nombor ganjil diakhiri
Selepas pemerhatian, saya dapati
奇数 + 1
、偶数 - 1
baikLengkapkan soalan pertama
ScreenShot One
Seterusnya
Soalan seterusnya ialah mendapatkan nombor perdana berdasarkan perkara di atas iaitu dapatkan semua nombor perdana daripada
zs
Saya mencari isu tentang nombor perdana, dan orang lain berkata
质数分布在 6 的倍数的左边或者右边
Kemudian saya hanya perlu melintasi sisi kiri dan kanan setiap gandaan 6 dan menentukan sama ada ia nombor perdana.Pautan: Menentukan sama ada nombor ialah nombor perdana/nombor perdana - daripada algoritma penghakiman biasa kepada idea algoritma penghakiman yang cekap
ScreenShot Dua
Saya tidak tahu sama ada ia betul...
Tetapi kita masih perlu meletakkan semula nombor perdana 1 2 3 5 daripada
小于 6
secara berasingan. (Tiada ejaan di sini)Prestasi
Patuhi kod yang tertulis di atas
ujian
1000 万
Hasilnya seperti dalam gambarIa mengambil masa
13.8
saat. Tidak mustahil untuk melengkapkan volum13.8
秒 不可能做到10 + 3
秒内完成100亿
dalam10 + 3
saat.Komputer saya ialah
i5-4210M
12G
Chrome 58
JavaScript
做不到这样的性能:100亿
个数字13
nombor dalam13
saat....Beberapa
G
data...Mengikut idea di atas, walaupun
C/C++
dianggarkan sukar untuk berlari 10 bilion dalam masa 13 saat.Fokus untuk menyelesaikan masalah.
Pautan
Tentukan sama ada nombor ialah nombor perdana/nombor perdana - daripada algoritma penghakiman biasa kepada idea algoritma penghakiman yang cekap
Pertama sekali, terima kasih atas algoritma untuk mencari nombor perdana di tingkat atas saya akan menyiarkan keputusan dan kod saya (hanya 10 juta, 100 juta pelayar meletup secara langsung, dan rekursi tidak boleh digunakan untuk mencari nombor perdana (hasil ujian saya). jika tidak, saya perlu Meletup, hanya boleh lelaran).
Hasil dalam pelayar:
Hasilnya dalamnod: