Найти все числа от 0 до 200, которые нацело делятся на сумму своих цифр - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста! Необходимо написать программу. Условия: Найти все числа от 0 до 200, которые нацело делятся на сумму своих цифр.
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
 
int main()
{
    int p[200], i, *p_1, a, b, c, r, q;
    for(i=0;i<200;i++)
    *p_1=p[i];
    a=i/100;
    b=(i-a)/10;
    c=i-a-b;
    r=a+b+c;
    q=*p_1/r;
    if(q==0){
    
    printf("%d", q);
    getchar();
    return 0;
    
}}

Решение задачи: «Найти все числа от 0 до 200, которые нацело делятся на сумму своих цифр»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
int p, i, s;
for(i=1;i<=200;i++) {
p=i;
for(s=0; p; p/=10) s += p%10;
if (i%s==0) printf("%d\n", i);
}
getchar();
return 0;
}

Объяснение кода листинга программы

В этом коде используется два вложенных цикла. Цикл for(i=1;i<=200;i++) итерирует по всем числам от 1 до 200. Внутри этого цикла есть второй цикл for(s=0; p; p/=10), который вычисляет сумму цифр текущего числа. Переменная s инициализируется нулем. Затем в каждой итерации цикла значение переменной p делится на 10 и результат прибавляется к переменной s. Таким образом, в переменной s накапливается сумма цифр текущего числа. Если число нацело делится на сумму своих цифр (т.е. i%s==0), то оно выводится на экран с помощью функции printf. Код выполняется до тех пор, пока не будут выполнены два условия: 1) i не станет равным 201; 2) не будет достигнуто условие остановки внутреннего цикла, когда p станет равным нулю. Это произойдет, когда число будет иметь одну цифру.

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы