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:
245
asal 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 2
için 31
ya 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 1022
IS 73
ve en yüksek asal çarpan 1026
olduğunu 19
. Çünkü ilgilenmediğimizden 19
daha 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
N
büyük1
ve 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=2
1
asal 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.
2
N için en yüksek asal çarpanı elde ettik. Sonra5
N-1 ve61
N + 1 için. Sonra19
N-2 ve67
N + 2 için. O zamandan beri19>5
veya 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.)