Одномерные массивы и работа со строками

Содержание

Слайд 3

Задача

Требуется разложить на простые множители натуральное число с количеством знаков более

Задача Требуется разложить на простые множители натуральное число с количеством знаков более 11.
11.

Слайд 4

План действий

Решение поставленной задачи для «коротких» чисел
Реализация простейших алгебраических операций для «длинных»

План действий Решение поставленной задачи для «коротких» чисел Реализация простейших алгебраических операций
чисел
«Сборка» программы и тестирование

Слайд 5

Основной алгоритм очевиден.

Несколько «фишек» для
оптимизации программы

Основной алгоритм очевиден. Несколько «фишек» для оптимизации программы

Слайд 6

Избавляемся от надобности определять простоту числа

Избавляемся от надобности определять простоту числа

Слайд 7

Избавляемся от лишних проверок делителей

Рассматриваем делители только до квадратного корня из

Избавляемся от лишних проверок делителей Рассматриваем делители только до квадратного корня из
данного числа.
Корень вычисляем приблизительно (берем число состоящее из n/2 + 1 девятки, где n – количество цифр в данном числе). Заметим, что этот «корень» наверняка больше, чем его реальное значение, это значит, что делители мы не потеряем.

Слайд 8

А вдруг число простое?

Чтобы понять, что введенное число являлось простым и

А вдруг число простое? Чтобы понять, что введенное число являлось простым и
вывести его единственный простой делитель(само число), определим специальную переменную bool mark = false, значение которой изменим на true, если хотя бы 1 делитель уже был найден. Тогда, после выхода из основного цикла, мы будем знать: было ли число простым.

Слайд 9

Итак… Пошел процесс…

Итак… Пошел процесс…

Слайд 10

Сompleted?..

Нужно еще протестировать…

Сompleted?.. Нужно еще протестировать…

Слайд 11

Тестируем

Посмотрим, как работает защита от типичного (любопытного и шаловливого) пользователя.

Число начинаются

Тестируем Посмотрим, как работает защита от типичного (любопытного и шаловливого) пользователя. Число начинаются с 0? Нехорошо…
с 0? Нехорошо…

Слайд 12

Тестируем

Число начинается с нескольких 0? Еще хуже.

Число содержит какие-то символы,

Тестируем Число начинается с нескольких 0? Еще хуже. Число содержит какие-то символы,
кроме цифр? Эх… руки бы таким пообрывать…

Слайд 13

Тестируем

Ввод может оказаться корректным, поэтому проверим правильность работы программы онлайн калькулятором.

Тестируем Ввод может оказаться корректным, поэтому проверим правильность работы программы онлайн калькулятором.

Слайд 14

Тестируем

Ввод может оказаться корректным, поэтому проверим правильность работы программы онлайн калькулятором.

Тестируем Ввод может оказаться корректным, поэтому проверим правильность работы программы онлайн калькулятором.

Слайд 15

Тестируем

Ввод может оказаться корректным, поэтому проверим правильность работы программы онлайн калькулятором.

Тестируем Ввод может оказаться корректным, поэтому проверим правильность работы программы онлайн калькулятором.

Слайд 16

Тестируем

Ввод может оказаться корректным, поэтому проверим правильность работы программы онлайн калькулятором.

Тестируем Ввод может оказаться корректным, поэтому проверим правильность работы программы онлайн калькулятором.

Слайд 17

Тестируем

Ввод может оказаться корректным, поэтому проверим правильность работы программы онлайн калькулятором.

Тестируем Ввод может оказаться корректным, поэтому проверим правильность работы программы онлайн калькулятором.

Слайд 18

Mission complete!

Программа работает. Если брать числа с количеством знаков более 15,

Mission complete! Программа работает. Если брать числа с количеством знаков более 15,
то время выполнения программы будет очень большое.
Какое-то из 16-значных чисел раскладывалось около 54 минут. По роковой случайности (закрыл консоль) screenshot не сохранился.