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:
245memiliki 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 2ke 31atau 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 1022adalah 73, dan faktor prima tertinggi 1026adalah 19. Karena 19lebih rendah daripada 41kita 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
Nlebih besar dari1dan 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=2sebenarnya tampaknya menjadi tepi kasus karena 1tidak memiliki faktor prima, jadi tidak ada faktor prima maksimum yang dapat kita bandingkan untuk memutuskan apakah kita harus melanjutkan.
2untuk N. Kita kemudian mendapatkan5untuk N-1 dan61untuk N +1. Lalu kita dapatkan19untuk N-2 dan67untuk N + 2. Haruskah kita terus mencoba angka yang lebih rendah, sejak19>5atau berhenti, sejak5<61? Yaitu maksima disimpan per-sisi? (Saya tidak yakin apakah contohnya secara matematis dimungkinkan.)