Задачі. Дільники, сума дільників та прості числа.
Сьогодні було декілька занять де розв'язували задачі пов'язані з дільниками.
Перед самим задачами трішки теорії.

Цілочисельне ділення - це ділення в цілих числах, тобто вважаємо що дробів нема))
Наприклад 7/2 це буде 3. Чисто три без всяких цілих та десятих. Просто три.
В деяких мовах це виходить само собою)) int a=7/2; double b=7/2; Що перше що друге буде 3.
Залишок від ділення - це те що залишається від того коли ми ділимо. Взагалі що таке ділення, поділити на 5 - це значить скільки раз 5 міститься я комусь числі. Тобто віднімаємо і рахуємо, Наприклад 23/5 22/5
22-5=17 - раз
17-5=12 - два
12-5=7 - три
7-5=2
все більше віднімати не можемо. Три - це результат ділення(частка), а 2 те що лишилося від ділення, лишилося неподіленим - залишок від ділення.
int zal = 22%5;
В деяких мовах навіть є спеціальні операції для цього, повторю, що це дуже важливі операції. Наприклад в Pascal 22 div 5 - результат ділення 22 на 5(ціла частина), а 22 mod 5 - залишок від ділення 22 на 5. Є навіть ціла тема - алгебра лишків
Зауважу що слід бути обережним при роботі з від'ємними числами. Мови що пішли від С/С++ ведуть себе "неправильно" з від'ємними числами(успадкували від процесора, асемблера) А в мові Python все вірно як в математиці.
Якщо залишок рівний нулеві - кажуть число ділиться націло.
25 % 5 = 0 - залишку нема, отже число ділиться націло. І число 5 - дільник для числа 25.
Ще є така неочевидна перевірка.
Що буде якщо число поділити на х, а потім назад помножити на х?
Скажете що буде те ж саме??😁
Отже саме перша задача
1. Вивести всі дільники певного числа.
Наприклад для 100 - 1 2 4 5 10 20 25 50 100
Звісно що кожне число ділиться на 1 та саме на себе, такі дільники не дуже цікаві, але набагато цікавіші числа що мають лише такі дільники.
Їх звуть простими числами. Тобто вони не мають інших дільників крім 1 та самого себе. не діляться на жодне інше число.
2. Перевірити чи є певне число простим чи ні. Ця задача схожа на попередню. Не дуже відрізняється від попередньої.
**3. Знайти суму всіх дільників певного числа, без його самого. Тобто в суму ми беремо 1 як дільник, і не беремо саме число.
Ці задачі, зокрема дві останні можна розв'язати "в лоб" примітивно)) Зараз я поясню що в них не так.
Якщо їх використовувати як підзадачі в інших задачах - виявиться що вони дужн довго працюють, катастрофічно довго при великих числах.
Ну от якщо перевірити чи просто число 1001, то будемо ділити його на всі числа підряд....але явно не слід ділити 1001/1000, чи 1001/999, чи й 1001/998.....але де ж тоді зупинитися???
Наступного разу я напишу про досконалі числа - та числа друзі. Це буде як продовження даних задач.
Something's not quite right here.
23/5 or 22/5?
And 22/5 = 4.xx
What do you mean? C and C++ can handle negative numbers too (of course). What do you think is wrong with that?
That’s right. At least, if you want to try every number as a divisor. Fortunately, there are various algorithms for this.
🎉 Congratulations!
Your post has been upvoted by the SteemX Team! 🚀
SteemX is a modern, user-friendly and powerful platform built for the Steem community.
🔗 Visit us: www.steemx.org
✅ Support our work — Vote for our witness: bountyking5
High-Yield Curation by @steem-seven
Your content has been supported!
Maximize your passive income!
Delegate your SP to us and earn up to 0.45 STEEM / 1000 SP.
Click here to see our Tiered Reward System
We are the hope!
Curated by: @ahsansharif