Среди трехзначных чисел найти такие которые делятся на цифры из которых состоят - C (СИ)
Формулировка задачи:
Написать исходный текст программы.Среди трехзначных чисел найти такие которые делятся на цифры из которых состоят , а так же перевертыш этих чисел должны делиться на цифры из которых состоят. Вывести на экран
Решение задачи: «Среди трехзначных чисел найти такие которые делятся на цифры из которых состоят»
textual
Листинг программы
#include <stdbool.h>
#include <stdio.h>
int get_digit(int number, int n_digit)
{
while( --n_digit ) {
number /= 10;
}
return number % 10;
}
bool is_divided_by_its_digits(int number)
{
int digit;
for( int i = 1; i != 4; ++i ) {
digit = get_digit(number, i);
if( digit == 0 || number % digit != 0 ) return false;
}
return true;
}
int get_reverse_number(int number)
{
int reverse_number = 0;
int pow10 = 1;
for( int i = 3; i != 0; --i ) {
reverse_number += pow10 * get_digit(number, i);
pow10 *= 10;
}
return reverse_number;
}
bool divided_by_its_digits[1000];
int main(int argc, char* argv[])
{
int i;
for( i = 100; i != 1000; ++i ) {
divided_by_its_digits[i] = is_divided_by_its_digits(i);
}
int reverse_i;
for( i = 100; i != 1000; ++i ) {
if( divided_by_its_digits[i] ) {
reverse_i = get_reverse_number(i);
if( divided_by_its_digits[reverse_i] ) {
printf("%d and %d\n", i, reverse_i);
divided_by_its_digits[reverse_i] = false;
}
}
}
return 0;
}