також, по темі оптимізацій --
існують різноманітні варіанти --
0 -- можна "в лоб" ділити на все підряд, від 2 і до (n - 1)
1 -- можна скористатись оптимізаціями, які запропонував mr. koala
2 -- у випадку організації частини програми у вигляді функції, у якості підпрограми,
яка не відповідає за спосіб отримання даних
▼Прихований текст
зчитування введених з клавіатури, отримання з інтернету, зчитування з диску etc
а лише перевіряє одне отримане число, та повертає bool (true/false) -- говорить, що це за число --
▼Прихований текст
так рекомендують писати великі програми -- не весь код в одній функції та одному файлі,
а розбивку на функції-підпрограми, розміщені по різних файлах (модульність),
кожна з яких, в ідеалі, вирішує одну невеличку задачу,
це дозволяє не писати багатократно одне і те ж,
а повторно застосовувати один раз написаний код,
▼Прихований текст
DRY - Don't repeat yourself -- тобто, пишіть без дублювання свого коду
як в межах одного проекту, так і легко переносити в інші проекти один раз написаний код
коли ми знайдемо дільник, ми зможемо написати дуже очевидне
повернення результату з функції у вигляді (return 0), щоб уникнути подальших перевірок
звичайно, код mr. koala вище, також так працює, та це не повністю очевидно,
особливо для новачка
можливо, вам показали робочий приклад з надією,
що з нюансами ви розберетесь самостійно
я не впевнений, що новачок зможе пояснити вчителю, у чім різниця між ++j та j++ , якщо вчитель про це запитає
я би не радив писати код у стилі "без дужок для if та for, якщо у нас далі йде лише одна інструкція"
це явно не покращує читабельність, є можливістю наламати дров помилок,
та може зробити пошук багів набагато довшим
imho краще писати завжди з дужками
▼Прихований текст
if(a % j == 0)
is_prime = 0;
// -->
if(a% j == 0){
is_prime = 0;
}
// або ж
if(a% j == 0)
{
is_prime = 0;
}
// так же і з else-гілкою
if(..){..}else{..}
3 -- можлива додаткова оптимізація,
яка полягає у визначенні ряду простих чисел (чи деякої частини цього ряду) раніше, наперед,
ака "підготовка перед рантаймом",
і далі просто перевіряємо, чи є наше число у списку/масиві чисел
(або ж економимо час на розрахунку частини ряду), який ми уже розрахували заздалегідь,
щоб не визначати ці числа під час роботи програми
знаю, у випадку конкретно цієї задачі, напевно, смисл такої оптимізації не є надто великим,
хіба що вам дано досить багато чисел для перевірки )
це можливе за умови, що нам наперед відомий діапазон,
деякі числа з якого нам потрібно перевірити
у програмуванні часто виникає така потреба, та користуються таким рішенням --
деякі частини рішення різноманітних задач готують раніше,
можна це назвати "шаблоном" чи "пазлом", одним словом -- частиною рішення
такий прийом має смисл у випадках, якщо у нас є певні операції,
які потрібно застосувати багато разів, до багатьох елементів, об'єктів тощо,
та коли ми можемо ці операції виконати (частково, чи повністю) лише один раз,
замість того, щоб виконувати дуже багато разів
4 -- буває, що наперед заготовані дані та/або шаблони/пазли не вигідно тримати в оперативній пам'яті,
чи вони навіть повністю не поміщаються в оперативці --
у такому випадку ці дані зберігають на диску -- в файлі, чи базі даних,
зчитують невеличкими порціями, працюють з ними,
та переходять до зчитування наступних невеличких порцій
розумію, що вам, з великою ймовірністю, це все не є потрібним,
та раптом цікавим буде
успіхів з вирішенням задач-завдань!