Другие языки программирования и технологии

Написать на паскале одну из трех задач, использовать процедуру или функцию. Заранее спасибо!

1. Даны два натуральных числа. Определить, является ли первое число перевертышем второго.

2. Дано натуральное число. Найти все го делители и подсчитать их количество.

3. Из промежутка чисел от А до В найти те, у которых больше всего делителей.
NF
Nadir Ferehov
206
1. Первое и второе число - в строку. Вторую строку переворачиваем. Если строки равны - перевертышь, иначе не перевертышь
2. В цикле по i от 1 до данного числа: брать остаток от деления (mod) данного числа на i, если результат равен 0 (т. е. i является делителем данного числа) то выводим i и увеличиваем счетчик на один (inc). В конце цикла все делители выведены а в счетчике кол-во делителей.
3. Вторую задачу оформить как функцию, на входе которой число, а на выходе - кол-во делителей. Потом в цикле по i от A до B вызывать написанную функцию с i на входе и запоминать число с максимальным кол-вом делителей. По завершении цикла будем иметь ответ.
Kymb@t [[Beck]] Turdukul Uulu
Kymb@t [[Beck]] Turdukul Uulu
4 935
Лучший ответ
1.

function nrev(x: longint): longint;
var
    r: longint;
begin
    r := 0;
    while x 0 do begin
        r := r * 10 + x mod 10;
        x := x div 10;
    end;
    nrev := r;
end;

var
    a, b: longint;
begin
    write('числа? ');
    readln(a, b);
    if b = nrev(a) then writeln('да') else writeln('нет');
end.
N*
Naik ***
65 954
Могу только подсказать пару трюков. Для того чтобы найти делитель для числа нужно проверить все числа пополам плюс само число и единица. То есть если взять число 7 делим его без остатка на 2 получаем 3 и проверяем или остаток больше нуля. Если так выводим числитель на экран. В случае с 7 это будут 1 и 7. Другой пример: 6
Выводим: 1, 6 и проверяем до 6/2=3 То есть проверим 2 остаток 0 выводим 2, проверим 3 остаток 0 выводим 3. Итого делители 1, 6, 2 и 3.
Используем процедуру из задачи номер 2 для сравнения двух чисел.
VB
Viktor Bitter
677