Привет всем, помогите написать программу на С++, который будет показывать делится ли число на 3,6,9.
Например: Написал 27, и ответ был такой - Число 27 делится на 9 и на 3 . Но не делится на 6. Если не сложно, помогите.
C/C++
Программа делится ли число на 3 6 9 без остатка на с++
#include <iostream>
using namespace std;
int gcd(int a, int b) {
a = abs(a);
b = abs(b);
if (!b) return a;
return gcd(b, a % b);
}
int lcm(int a, int b) {
return abs(a * b) / gcd(a, b);
}
int main() {
system("chcp 1251 > nul");
int number;
while (true) {
cout << "Целое число: ";
cin >> number;
if (gcd(number, 3) != 1) {
cout << "Число " << number << " делится на 3";
auto x6 = lcm(number, 6) == number;
auto x9 = lcm(number, 9) == number;
if (x6 && !x9) cout << " и 6. Но не делится на 9";
else if (!x6 && x9) cout << " и 9. Но не делится на 6";
else if (x6 && x9) cout << ", 6 и 9";
else cout << ". Но не делится на 6 и 9";
puts(".");
} else cout << "Число " << number << " не делится на 3, 6 и 9.\n";
}
system("pause > nul");
}
using namespace std;
int gcd(int a, int b) {
a = abs(a);
b = abs(b);
if (!b) return a;
return gcd(b, a % b);
}
int lcm(int a, int b) {
return abs(a * b) / gcd(a, b);
}
int main() {
system("chcp 1251 > nul");
int number;
while (true) {
cout << "Целое число: ";
cin >> number;
if (gcd(number, 3) != 1) {
cout << "Число " << number << " делится на 3";
auto x6 = lcm(number, 6) == number;
auto x9 = lcm(number, 9) == number;
if (x6 && !x9) cout << " и 6. Но не делится на 9";
else if (!x6 && x9) cout << " и 9. Но не делится на 6";
else if (x6 && x9) cout << ", 6 и 9";
else cout << ". Но не делится на 6 и 9";
puts(".");
} else cout << "Число " << number << " не делится на 3, 6 и 9.\n";
}
system("pause > nul");
}
Макс Сидельников
Спасибо!) Все работае)

Григорий Григорьев
Глубокоуважаемый, не кажется ли Вам, что условие первого ветвления чересчур расточительно? Ведь число 3 является делителем и для 6, и для 9. Ясно, что числа, не кратные 3, не делятся ни на 6, ни на 9.
Григорий Григорьев
...Но, конечно, респект, что Вы постарались следовать примеру.
Камил, каюсь, по-видимому к зиме я становлюсь тугодумом, и озарение приходит ко мне слишком поздно.
Только в тяжелом сне до меня дошло, что идея, использовать массив, была верной, однако, нужно не брать из него делители, а заполнять его: ДЕЛИТЕЛИ ПОМЕЩАТЬ, НАЧИНАЯ ОТ ЕГО НАЧАЛА, ОСТАЛЬНОЕ — ОТ КОНЦА, и считать количество, например, делителей. Тогда и процесс сравнения, и вывод получаются предельно простыми и лаконичными.
Надеюсь, что эта информация будет полезной Вам при решении других задач.
Всего доброго.
Только в тяжелом сне до меня дошло, что идея, использовать массив, была верной, однако, нужно не брать из него делители, а заполнять его: ДЕЛИТЕЛИ ПОМЕЩАТЬ, НАЧИНАЯ ОТ ЕГО НАЧАЛА, ОСТАЛЬНОЕ — ОТ КОНЦА, и считать количество, например, делителей. Тогда и процесс сравнения, и вывод получаются предельно простыми и лаконичными.
Надеюсь, что эта информация будет полезной Вам при решении других задач.
Всего доброго.
Похожие вопросы
- C++. Бинарный поиск. Объясните работу данной программы. Найдите такое число x, что , с точностью не менее 6 зн.С while
- Написать программу, которая выводит числа из файла с текстом и числами. С++
- Написать программу, которая сравнивает число перестановок элементов при использовании сортировки «пузырьком» (усовершенс
- С++ Максимум трёх чисел Даны три целых числа. Найдите наибольшее из них (программа должна вывести ровно одно целое число
- Сколько раз нужно взять остаток от деления числа на кол-во единиц в его двоичном представлении, чтобы получить 0
- В LINUX OS Написать программу, которая из командной строки получает целое число N и некоторый текст “Text”.
- Помогите пожалуйста написать программу, реализующую десять генераторов псевдослучайных чисел.СИ!!!!
- Си. Цикл for. Что не так? Составить программу вывода на экран всех простых чисел не превосходящих введеннного числа N
- Как записать из набора чисел первое четное и минимальное кратное 3
- Написать программу, возвращающую значение N, если N - простое число