C/C++

Ошибка в программе, помогите исправить.

Есть программа по следующему заданию:
Среди заданных целых чисел k, l, m найти пары кратных чисел.

Однако при проверке взял числа 12,4 и 5,и прога выводит результат, что 12 кратно 4,и 5 кратно 4,чего быть не должно.
Вот прога.
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int input(const char* msg) {
printf(msg);
int value;
scanf_s("%i", &value);
return value;
}
_Bool aliquot(int a, int b) {
if (a < b) return false;
return ~(a / b) & 1;
}
int main(void) {
int k, l, m;
system("chcp 1251 > nul");
k = input("Введите k: ");
l = input("Введите l: ");
m = input("Введите m: ");
if (aliquot(k, l)) puts("k кратно l");
if (aliquot(k, m)) puts("k кратно m");
if (aliquot(l, k)) puts("l кратно k");
if (aliquot(l, m)) puts("l кратно m");
if (aliquot(m, k)) puts("m кратно k");
if (aliquot(m, l)) puts("m кратно l");
system("pause > nul");
}
Евгений Захарьев
Евгений Захарьев
91 996
Лучший ответ
Определение кратного числа Число n называется кратным некоторому натуральному числу p, если оно нацело делится на p. При этом говорят что n кратно p .

Получается только число 12 явл кратным для числа 4.

int array[3] = {l,k,p};
for(int i(0); i < 3; ++i){
for(int j(0); j < 3; ++j){
if(i!=j){
if(!(array[j]%array[i])){
cout << "pair descovered !!!" << array[j] << " divided by " << array[i] << " without remainder " << endl;
}
}
}
}
Alexander Bauer
Alexander Bauer
10 755
Вообще не кратность определяешь. Условие с деление - вообще не имеет смысла. Это на какое число надо поделить чтобы получить 0 (false)?
Чтобы определить кратность, проверяй, равен ли нулю остаток от деления, т. е. k % l == 0. Пока это исправь, у тебя там ещё есть ошибки. Если не сможешь с ними справиться, то лучше обратись к преподавателю, у тебя слишком плохо получается. Основы алгоритмизации прогуливал или их не было?
Илья Коданев
Илья Коданев
2 471