В
Все
Х
Химия
В
Видео-ответы
А
Алгебра
Г
Геометрия
О
ОБЖ
Д
Другие предметы
У
Українська література
Р
Русский язык
Б
Беларуская мова
У
Українська мова
Э
Экономика
Ф
Физика
М
Математика
Ф
Французский язык
Г
География
И
Информатика
М
МХК
О
Окружающий мир
П
Психология
Н
Немецкий язык
О
Обществознание
П
Право
И
История
М
Музыка
Л
Литература
Қ
Қазақ тiлi
Б
Биология
А
Английский язык
MashaTears1
MashaTears1
03.10.2022 23:33 •  Информатика

Разложить число на простые числа например 20 = 2^2 + 5^1 желательно с оптимизацией, чтоб для 6-значных чисел не считалось пол часа программу можно писать на любом языке из c-подобных, ruby, pascal, vb и тп

Ответ:
ann396
ann396
23.07.2020 18:22
Var
  i,k,n,p:longint;
  f:array[1..10,1..2] of longint;
begin
  p:=2; i:=1;
  f[1,1]:=1; f[1,2]:=1;
  Write('Введите натуральное число не больше 2 147 483 647: ');
  Read(n);
  Write(n,' = 1');
  while n<>1 do begin
    if (n mod p)=0 then begin
      if f[i,1]<>p then
      begin Inc(i); f[i,1]:=p; f[i,2]:=1 end
      else Inc(f[i,2]);
      n:=n div p
    end
    else inc(p)
  end;
  k:=i;
  for i:=2 to k do
  begin
    Write(' x ',f[i,1]);
    if f[i,2]>1 then Write('^',f[i,2])
  end;
  Writeln
end.

Тестовое решение:
Введите натуральное число не больше 2 147 483 647: 223092870
223092870 = 1 x 2 x 3 x 5 x 7 x 11 x 13 x 17 x 19 x 23

Введите натуральное число не больше 2 147 483 647: 65536
65536 = 1 x 2^16

Введите натуральное число не больше 2 147 483 647: 2147483647
2147483647 = 1 x 2147483647
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?