Saya pikir paling mudah untuk menjelaskan tantangan ini secara berurutan. Mulai dengan nomor input N dan:
- Temukan faktor prima tertinggi
- Memeriksa nomor di atas dan di bawah N dan melihat apakah faktor utama tertinggi adalah lebih tinggi (yaitu faktor utama tertinggi N-1 dan / atau N + 1 lebih tinggi dari faktor N .
- Lanjutkan untuk memeriksa angka yang lebih tinggi dan / atau lebih rendah tetangga N dalam arah di mana faktor tertinggi meningkat ( (N-2, N-3 ...) dan / atau (N + 2, N + 3 ...) dan sebagainya di)
- Setelah tidak ada faktor prima di kedua arah yang lebih tinggi dari yang telah kami temukan, kami berhenti dan menampilkan faktor prima tertinggi yang kami temui.
Mari kita lihat sebuah contoh:
245
memiliki faktor utama 5, 7, 7
. Tetangganya adalah:
244 -> 2, 2, 61
245 -> 5, 7, 7
246 -> 2, 3, 41
Faktor prima tertinggi meningkat di kedua arah, jadi kita harus melihat tetangga berikutnya:
243 -> 3, 3, 3, 3, 3
244 -> 2, 2, 2, 61
245 -> 5, 7, 7
246 -> 2, 3, 41
247 -> 13, 19
Faktor prima tertinggi sekarang menurun di kedua arah, sehingga faktor prima tertinggi yang kami temui adalah 61
, dan karenanya harus dikembalikan.
Contoh lain:
Mari lihat 1024
. Faktor utamanya adalah 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
. Faktor utama tetangga terdekatnya adalah:
1023 -> 3, 11, 31
1024 -> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1025 -> 5, 5, 41
Faktor prima tertinggi meningkat di kedua arah, dari 2
ke 31
atau 41
. Mari kita lihat tetangga:
1022 -> 2, 7, 73
1023 -> 3, 11, 31
1024 -> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1025 -> 5, 5, 41
1026 -> 2, 3, 3, 19
Faktor prima tertinggi 1022
adalah 73
, dan faktor prima tertinggi 1026
adalah 19
. Karena 19
lebih rendah daripada 41
kita tidak tertarik. Angka ini masih bertambah untuk angka yang lebih kecil dari N, jadi kami akan memeriksa yang berikutnya ke arah itu :
1021 -> 1021
1022 -> 2, 7, 73
1023 -> 3, 11, 31
1024 -> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1025 -> 5, 5, 41
1026 -> 2, 3, 3, 19
1021
adalah prime, dan prime tertinggi yang kami temui, jadi harus dikembalikan.
Aturan:
- Anda hanya akan mendapatkan positif
N
lebih besar dari1
dan lebih kecil dari2^31-2
. - Format input dan output adalah opsional, tetapi angkanya harus dalam basis 10.
- Anda harus terus mencari bilangan prima yang lebih tinggi selama nilai tertinggi meningkat ke arah itu. Arahnya tidak tergantung satu sama lain.
Kasus uji:
Format: N, highest_factor
2, 3
3, 3
6, 7
8, 11
24, 23
1000, 997
736709, 5417
8469038, 9431
N=2
sebenarnya tampaknya menjadi tepi kasus karena 1
tidak memiliki faktor prima, jadi tidak ada faktor prima maksimum yang dapat kita bandingkan untuk memutuskan apakah kita harus melanjutkan.
2
untuk N. Kita kemudian mendapatkan5
untuk N-1 dan61
untuk N +1. Lalu kita dapatkan19
untuk N-2 dan67
untuk N + 2. Haruskah kita terus mencoba angka yang lebih rendah, sejak19>5
atau berhenti, sejak5<61
? Yaitu maksima disimpan per-sisi? (Saya tidak yakin apakah contohnya secara matematis dimungkinkan.)