Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Срочно! Помогите пожалуйста с последним пунктом в программе. С++

Аврора Цветаева Ученик (83), открыт 3 недели назад
int main() {
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) «простое», если число является таковым и «не является простым» иначе. с++
2 ответа
Данил Ласый Просветленный (32806) 3 недели назад
Код не проверял. Но последняя операция - повтор. Так и надо?
Федор Конопля Профи (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 до квадратного корня из числа, оно не является простым.

Теперь программа выполняет все три пункта задачи.
Аврора ЦветаеваУченик (83) 3 недели назад
но при числе например 2025, код показывает, что это не простое число, хотя это не так
Похожие вопросы