Как найти минимальное число 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
Вот пример кода на 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.
Вот пример кода на 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.