Найти натуральные числа делящихся нацело на заданные числа и находящихся в заданном интервале - C (СИ)
Формулировка задачи:
Найти 20 первых натуральных чисел, делящихся нацело на 13 или на 17, и находящихся в интервале, левая граница которого равна 500
Решение задачи: «Найти натуральные числа делящихся нацело на заданные числа и находящихся в заданном интервале»
textual
Листинг программы
#include <bool.h> #include <stdio.h> bool is_correct(int x) { return (x % 13 == 0) || (x % 17 == 0); } int find_next_correct(int n) { while (!is_correct(++n)) ; return n; } int main(void) { int n = 500; for (int i = 0; i < 20; i++) { printf("%d\n", n = find_next_correct(n)); } return 0; }
Объяснение кода листинга программы
В этом коде:
- Находится число, которое нацело делится на 13 или 17
Функция
is_correct
принимает целое числоx
и возвращаетtrue
, еслиx
делится нацело на 13 или 17, иначе возвращаетfalse
. Используется оператор%
для проверки остатка от деления. - Находится следующее число, которое нацело делится на 13 или 17
Функция
find_next_correct
принимает целое числоn
и возвращает следующее целое числоn
, которое нацело делится на 13 или 17. Используется циклwhile
, чтобы продолжать увеличиватьn
, пока не будет найдено следующее число, которое нацело делится на 13 или 17. Оператор!
используется для инвертирования значения функцииis_correct
, чтобы цикл продолжался, покаis_correct(n)
не станетtrue
. - Выводятся 20 чисел, которые нацело делятся на 13 или 17
В функции
main
создается переменнаяn
со значением 500. Затем используется циклfor
, чтобы вывести 20 чисел, которые нацело делятся на 13 или 17, используя функциюfind_next_correct
для увеличения значенияn
. Значениеn
передается в функциюprintf
для вывода на консоль. В конце функцииmain
возвращается 0, что означает успешное выполнение программы.