Multiple of a number in C

Asked

Viewed 398 times

-1

i am making an algorithm that finds the first multiple of 11, 13 or 17, but I don’t know how I show only the first multiple within a loop of repetition.

int numero;

printf("Digite um numero : ");
scanf("%d",&numero);

for (int contador = 1; contador <= numero; contador++){
    if (contador % 11 == 0 || contador % 13 == 0 || contador % 17 == 0){
        printf("%d \n",contador);
    }
}

2 answers

0

What you want is the MMC - Common Minimum Multiple of the three numbers.

By definition: - mmc(x,y) = (x * y) / mdc(x,y) - mmc(x, mmc(y, z)) = mmc(mmc(x, y), z)

#include <stdio.h>

int mdc(int x, int y) {
    /* Cálculo do mdc(x,y) utilizando o algoritmo de Euclides */
    if (x < y) {
        return mdc(y, x);
    }
    else {
        if (x % y == 0)
            return y;
        else
            return mdc(y, x%y);
    }

}

int main() {
    int n1, n2, n3, a, b, mmc;
    printf("Informe os 3 números: ");
    scanf("%d %d %d", &n1, &n2, &n3);
    a = mdc(n1, n2);
    b = mdc(a, n3);
    mmc = (n1 * n2 * n3)/ b;
    printf("\nO MDC de %d , %d e %d é : %d\n", n1, n2, n3, mdc);
    printf("\nO MMC de %d , %d e %d é : %d\n", n1, n2, n3, mmc);
    return 0;
}

Regarding your attempt you have to do:

contador = 1;
while (contador <= (11 * 13 * 17)) {
    if (contador % 11 == 0 && contador % 13 == 0 && contador % 17 == 0){
        printf("%d \n",contador);
        break; /* interromper o loop quando encontrar o mmc*/
     }
    contador++;
}

0

Since your question is about how to show only the first result and not about the algorithm itself, this is very basic, just break:

int numero;

printf("Digite um numero : ");
scanf("%d",&numero);

for (int contador = 1; contador <= numero; contador++){
    if (contador % 11 == 0 || contador % 13 == 0 || contador % 17 == 0){
        printf("%d \n",contador);
        break;  <============================
    }
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.