Федор Конопля
Профи
(592)
3 недели назад
Ваш код уже содержит часть решения, но давайте добавим недостающие элементы, чтобы он выполнял все три пункта задачи. Мы добавим проверку на простоту числа и исправим некоторые моменты в коде. Вот исправленный и дополненный код:
#include <iostream>
int main() {
int number;
std::cout << "Enter: ";
std::cin >> number;
if (number < 2) {
std::cout << "The number must be at least two";
return 0;
}
// 1) Наименьший натуральный делитель, отличный от 1
std::cout << "Least natural divisor different from 1: ";
int leastDivisor = 0;
for (int i = 2; i <= number; i++) {
if (number % i == 0) {
leastDivisor = i;
break;
}
}
std::cout << leastDivisor << std::endl;
// 2) Список всех натуральных делителей
std::cout << "List of natural divisors: ";
for (int i = 1; i <= number; i++) {
if (number % i == 0) {
std::cout << i << " ";
}
}
std::cout << std::endl;
// 3) Проверка на простоту
bool isPrime = true;
for (int i = 2; i * i <= number; i++) {
if (number % i == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
std::cout << "The number is prime." << std::endl;
} else {
std::cout << "The number is not prime." << std::endl;
}
return 0;
}
### Объяснение изменений:
1. Наименьший делитель: Мы используем цикл for, чтобы найти наименьший делитель, отличный от 1. Как только мы его находим, мы выходим из цикла.
2. Список делителей: Мы добавили делитель 1 в список, так как он также является делителем любого числа.
3. Проверка на простоту: Мы добавили логику для проверки, является ли число простым. Если число делится на любое число от 2 до квадратного корня из числа, оно не является простым.
Теперь программа выполняет все три пункта задачи.
int number, a = 1;
std::cout << "Enter: ";
std::cin >> number;
if (number < 2) {
std::cout << "The number must be at least two";
return 0;
}
std::cout << "Least natural divisor different from 1: ";
int i = 2;
while (number % i != 0) {
i += 1;
}
std::cout << i << std::endl;
std::cout << "List of natural divisors: ";
for (int i = 2; i <= number; i++) {
if (number % i == 0) {
std::cout << i << " ";
}
}
if (number % i == 0) std::cout << i;
return 0;
}
Дано целое число, не меньшее двух. Вывести: 1) его наименьший натуральный делитель, отличный от 1; 2) список всех натуральных делителей данного числа; 3) «простое», если число является таковым и «не является простым» иначе. с++