Bu zorluğu ardışık olarak açıklamanın en kolay yol olduğunu düşünüyorum. Giriş numarası N ile başlayın ve:
- En yüksek asal faktörünü bulun
- Yukarıdaki ve aşağıdaki numaralar kontrol N ve en yüksek asal faktör (yani en yüksek asal faktör daha yüksek olup olmadığını görmek N-1 ve / veya N + 1 faktörü daha yüksektir N .
- En yüksek faktörlerin arttığı ( (N-2, N-3 ...) ve / veya (N + 2, N + 3 ...) ve benzeri yönlerde N'ye komşu olan yüksek ve / veya düşük sayıları kontrol etmeye devam edin ) üzerinde
- Her iki yönde de zaten bulduğumuzdan daha yüksek asal faktörler olmadığında durur ve karşılaştığımız en yüksek asal faktörü çıkarırız.
Bir örneğe bakalım:
245asal faktörleri vardır 5, 7, 7. Komşuları:
244 -> 2, 2, 61
245 -> 5, 7, 7
246 -> 2, 3, 41
En yüksek asal faktör her iki yönde de artmaktadır, bu yüzden bir sonraki komşuya bakmalıyız:
243 -> 3, 3, 3, 3, 3
244 -> 2, 2, 2, 61
245 -> 5, 7, 7
246 -> 2, 3, 41
247 -> 13, 19
En yüksek asal faktörler şimdi her iki yönde de azalmaktadır, bu nedenle karşılaştığımız en yüksek asal faktör 61, geri döndürülmelidir.
Başka bir örnek:
Bakalım 1024. Temel faktörleridir 2, 2, 2, 2, 2, 2, 2, 2, 2, 2. En yakın komşularının başlıca faktörleri:
1023 -> 3, 11, 31
1024 -> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1025 -> 5, 5, 41
En yüksek asal çarpan dan, hem yönde artmaktadır 2için 31ya 41. Komşulara bakalım:
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
İçin en yüksek asal çarpan 1022IS 73ve en yüksek asal çarpan 1026olduğunu 19. Çünkü ilgilenmediğimizden 19daha düşük 41. N'den küçük sayılar için hala artıyor, bu yüzden bir sonrakini bu yönde kontrol edeceğiz :
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 bir asal ve karşılaştığımız en yüksek asal, bu yüzden iade edilmelidir.
Kurallar:
- Sadece daha
Nbüyük1ve daha küçük pozitif olacak2^31-2. - Giriş ve çıkış biçimleri isteğe bağlıdır, ancak sayılar temel 10'da olmalıdır.
- Bu yönde en yüksek değer arttığı sürece daha yüksek primler aramaya devam etmelisiniz. Yönler birbirinden bağımsızdır.
Test senaryoları:
Biçim: N, highest_factor
2, 3
3, 3
6, 7
8, 11
24, 23
1000, 997
736709, 5417
8469038, 9431
N=21asal bir etken olmadığı için aslında bir son durum gibi görünüyor , bu yüzden devam edip etmememiz gerektiğine karar vermek için karşılaştırabileceğimiz maksimum asal faktör yok.
2N için en yüksek asal çarpanı elde ettik. Sonra5N-1 ve61N + 1 için. Sonra19N-2 ve67N + 2 için. O zamandan beri19>5veya durmadan daha düşük sayıları denemeye devam etmeli miyiz5<61? Yani maksimumlar her iki tarafta da tutuluyor mu? (Örneğin matematiksel olarak mümkün olup olmadığından emin değilim.)