Top.Mail.Ru
Ответы

Нужно написать программу проверки числа на простоту и в противном случае разложения его на простые множители Java \ C++

1) Рандомное задание числа 15 значное
2) Проверка на простоту и если не простое
3) Разложение на простые множетили

По дате
По рейтингу
Аватар пользователя
Профи
7лет

Ввод вывод писать не буду, сам разберешься. Как определить простое ли число?? Самый простой вариант - в лоб перебрать все числа от 1 до (самого часла - 1) и делить число на эти числа.
n - число
for (int i = 2; i < n; i++) {
if (n % i == 0) //если да, то число составное, иначе ВОЗМОЖНО простое.
}
минус этого способа в том, что число может быть Очень большим, а перебирать всё слишком долго. Тут на помошь приходят древние математики - достаточно перебирать до числа под корнем. Тогда:
for (int i = 2; Math.sqrt(n) + 1; i++) и тд. Этого достаточно для скорости... А вот как разложить на простые множители... хм...
{
if (n % i == 0) {
вот и первый множитель - i.
создай хранилище (например динамический массив) и записывай туда текущий i.
а потом начинай весь цикл заного, только n = n / i;
}
}
Ну и в конце смотришь - если "хранилище" пустое, то число простое, иначе выводи содержимое (и есть множители). Как то так.

Аватар пользователя
Профи
7лет

Заходишь в интернет, ищешь признаки простого числа, смотришь алгоритм, реализуешь

Аватар пользователя
Просветленный
7лет

Пиши. Пацаны не против