Натхненник цим питанням над математикою .
Проблема
Нехай
nбуде натуральне число≥ 2. Візьміть найбільший дільник,nякий відрізняється відnсебе, і відніміть йогоn. Повторюйте, поки не отримаєте1.
Питання
Скільки кроків потрібно, щоб досягти 1певного числа n ≥ 2.
Детальний приклад
Нехай
n = 30.
Найбільший дільник:
1. 30 is 15 --> 30 - 15 = 15
2. 15 is 5 --> 15 - 5 = 10
3. 10 is 5 --> 10 - 5 = 5
4. 5 is 1 --> 5 - 1 = 4
5. 4 is 2 --> 4 - 2 = 2
6. 2 is 1 --> 2 - 1 = 1
Щоб дістатися, потрібно 6 кроків1 .
Вхідні дані
- Введення - ціле число
n, деn ≥ 2. - Ваша програма повинна підтримувати введення до максимального цілого значення мови.
Вихід
- Просто виведіть кількість кроків, наприклад
6. - Провідні / слідові пробіли або нові рядки - це добре.
Приклади
f(5) --> 3
f(30) --> 6
f(31) --> 7
f(32) --> 5
f(100) --> 8
f(200) --> 9
f(2016^155) --> 2015
Вимоги
- Ви можете отримати дані з
STDINаргументів командного рядка як параметрів функції або з найближчого еквівалента. - Можна написати програму або функцію. Якщо це анонімна функція, додайте приклад, як викликати її.
- Це кодовий гольф, тому найкоротша відповідь у виграші байтів.
- Стандартні лазівки заборонені.
Цю серію можна знайти і на OEIS: A064097
Квазі-логарифм, визначений індуктивно через
a(1) = 0і,a(p) = 1 + a(p-1)якщоpє простим, іa(n*m) = a(n) + a(m)якщоm,n > 1.
2^32 - 1. Решта залежить від вас та вашої системи. Сподіваюся, саме це ви мали на увазі під своїм запитанням.




