Як написати власну функцію вилучення кв
Що можна зробити краще, скоріше? Змінити алгоритм на метод поділу навпіл або побітовий пошук, зі зменшенням складності за кількістю біт в int з експоненційною до лінійної.
Не перевіряти на рівність if (temp == x), тому що рівності може бути, наприклад для number = 6. Переконатися, що функція завжди щось повертає. Приміром, при number = 6 ваша функція зациклюється чи падає з розподілом на 0, а за number = 0 завершується з невизначеним значенням.
просто підставляємо у формулу значення:
А чи використовувати більш оптимальні алгоритми? Для цілого числа дуже підійде розкладання до ряду. 1 = 1^2 1 + 3 = 2^2 1 + 3 + 5 = 3^2 1 + 3 + 5 + 7 = 4^2 Помічаєте?
Просто вичитаєте всі непарні числа починаючи з 1. Якщо залишок менший за наступне непарне число, то берете порядковий номер попереднього непарного числа. Але це підійде, якщо числа не дуже великі, хоча ваш алгоритм не кращий у цьому відношенні.
Ну і як зазвичай на тостері, пошукати мабуть ліньки, тому питань цікавих немає, а ось така ось фігня.