Натхненник цим питанням над математикою .
Проблема
Нехай
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
. Решта залежить від вас та вашої системи. Сподіваюся, саме це ви мали на увазі під своїм запитанням.