2013 год имеет первостепенную факторизацию 3*11*61
. 2014 год имеет первостепенную факторизацию 2*19*53
. Интересное свойство относительно этих факторизаций является то , что существует различные простые числа в факторизациях 2013 и 2014 , что сумма к тому же номеру: 11+61=19+53=72
.
Напишите программу или функцию, которая принимает в качестве входных данных два натуральных числа больше 1 и возвращает истинное значение, если существует сумма выбранных простых множителей одного числа, равная сумме выбранных простых факторов во втором числе, и ложное значение в противном случае.
Разъяснения
- Можно использовать более двух основных факторов. Не все основные факторы числа должны быть использованы в сумме. Нет необходимости, чтобы число простых чисел, используемых из двух чисел, было одинаковым.
- Даже если простое число увеличивается до некоторой степени больше 1 при факторизации числа, его можно использовать только один раз в сумме простых чисел для числа.
- 1 не простое число.
- Оба входных номера будут меньше чем
2^32-1
.
Контрольные примеры
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
Это код гольф. Стандартные правила применяются. Самый короткий код в байтах побеждает.
true
, поскольку они имеют общий фактор 7
?