Как найти минимальное число N, которое в степени N делится на A? FREE PASCAL. A не больше 10000
К примеру A = 8
1^1 = 1
2^2 = 4
3^3 = 27
4^4 = 256 - делится на A. Оно подходит => N = 4
С помощью перебора можно было возвести не более, чем 10^10, далее выкидывалась ошибка. (т.к. переходило за границу real 2.9e-39 .. 1.7e+38, а другие типы были недоступны )
P.S. Доступные типы integer, longint, real, string, array, boolean, byte, word

21 Авг 2019 в 06:12
186 +1
0
Ответы
1

Вот пример кода на Free Pascal для нахождения минимального числа N, которое в степени N делится на заданное число A:

program MinPowerDivisibleByA;
var
A, N: integer;
powerN: int64;
begin
write('Введите число A (не больше 10000): ');
readln(A);
N := 1;
powerN := N;
while powerN mod A <> 0 do
begin
Inc(N);
powerN := 1;
for var i := 1 to N do
begin
powerN := powerN * N;
if powerN > High(int64) div N then
begin
writeln('Слишком большое значение, увеличьте предел в программе');
Exit;
end;
end;
end;
writeln('Минимальное число N, которое в степени N делится на ', A, ', равно ', N);
end.

Программа будет последовательно увеличивать значение N и вычислять его степень N, пока результат не будет делиться на заданное число A.

20 Апр 2024 в 13:22
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир