Rok 2013 ma zasadnicze znaczenie 3*11*61
. 2014 ma pierwszoplanową faktoryzację 2*19*53
. Interesująca nieruchomość dotyczące tych factorizations jest to, że istnieją różne liczby pierwsze w factorizations 2013 i 2014, że suma na ten sam numer: 11+61=19+53=72
.
Napisz program lub funkcję, która przyjmuje na wejściu dwie dodatnie liczby całkowite większe od 1 i zwraca prawdziwą wartość, jeśli istnieje suma wybranych czynników pierwszych jednej liczby, która jest równa sumie wybranych czynników pierwszych w drugiej liczbie, oraz w przeciwnym razie wartość falsey.
Wyjaśnienia
- Można użyć więcej niż dwóch głównych czynników. Nie wszystkie czynniki pierwsze liczby muszą być użyte w sumie. Nie jest konieczne, aby liczba liczb pierwszych używanych z dwóch liczb była równa.
- Nawet jeśli liczba pierwsza zostanie podniesiona do pewnej potęgi większej niż 1 w rozkładzie liczb na liczbę, można jej użyć tylko raz w sumie liczb pierwszych dla liczby.
- 1 nie jest liczbą pierwszą.
- Obie liczby wejściowe będą mniejsze niż
2^32-1
.
Przypadki testowe
5,6
5=5
6=2*3
5=2+3
==>True
2013,2014
2013=3*11*61
2014=2*19*53
11+61=19+53
==>True
8,15
8=2^3
15=3*5
No possible sum
==>False
21,25
21=3*7
25=5^2
No possible sum (can't do 3+7=5+5 because of exponent)
==>False
To jest kod golfowy. Obowiązują standardowe zasady. Najkrótszy kod w bajtach wygrywa.
true
ponieważ dzielą ten czynnik 7
?