Знайти найбільший нетривіальний дільник натурального числа, завдання на pascal, програмування для

Формулювання. Дано натуральне число. Знайти його найбільший нетривіальний дільник або вивести одиницю, якщо такого немає.

Примітка 1: дільником натурального числа a називається натуральне число b. на яке a ділиться без залишку. Тобто вираз «b - дільник a» означає: a / b = k. причому k - натуральне число.

Примітка: нетривіальним дільником називається дільник, який відрізняється від 1 і від самого числа (так як на одиницю і саме на себе ділиться будь-яке натуральне число).

Рішення. Нехай введення з клавіатури здійснюється в змінну n. Спробуємо вирішити задачу перебором чисел. Для цього візьмемо число на одиницю менше n і перевіримо, чи ділиться n на нього. Якщо так, то виводимо результат і виходимо з циклу за допомогою оператора break. Якщо немає, то знову зменшуємо число на 1 і продовжуємо перевірку. Якщо у числа немає нетривіальних дільників, то на якомусь етапі перевірка дійде до одиниці, на яку число гарантовано поділиться, після чого буде видано відповідний умові відповідь.

Хоча, якщо говорити точніше, слід було б почати перевірку з числа, рівного n div 2 (щоб відкинути дробову частину при діленні, якщо n непарне), так як жодне натуральне число не має дільників більших, ніж половина це цього числа. В іншому випадку частка від ділення має бути натуральним числом між 1 і 2, якого просто не існує.

Дане завдання також вирішується через for. але через іншу його різновид, і тепер лічильник буде спадати від ndiv 2 до 1. Для цього do заміниться на downto. при позиції початкового і кінцевого значень залишаються тими ж.

Алгоритм природною мовою:

2) Запуск циклу, при якому i змінюється від ndiv 2 до 1. У циклі:

1. Якщо n ділиться на i (тобто, залишок від ділення числа n на i дорівнює 0), то виводимо i на екран і виходимо з циклу за допомогою break.

До речі, у оператора розгалуження if в циклі відсутня else -блок. Такий умовний оператор називається оператором розгалуження з однією гілкою.