1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Resto Divisao

Discussão em 'Programação' iniciada por So_SiMpLe_, 22 de Fevereiro de 2008. (Respostas: 25; Visualizações: 11831)

  1. So_SiMpLe_

    So_SiMpLe_ Power Member

    Boas!
    Alguem sabe como posso saber o resto de uma divisao qualque efectuada em C? é para saber se o numero é multiplo ou nao de 3 por exemplo.
    Obrigado!
    Abraço!
     
  2. CoolMaster

    CoolMaster Power Member

    RTFM...


    Operador: %
     
  3. So_SiMpLe_

    So_SiMpLe_ Power Member

    Hum pera é so o simbolo %? podes so exemplificar como é que se obtem msm numa divisao? tipo:

    {
    (...)
    a=b/c;
    printf("a=: %d", &a);
    printf("resto: %d" ......??
    (...)
    }
     
  4. Baderous

    Baderous Banido

    Se queres saber o resto da divisão de x por y fazes:

    Código:
    z = x%y;
     
  5. So_SiMpLe_

    So_SiMpLe_ Power Member

    Ok!
    Tks a lot :D
     
  6. So_SiMpLe_

    So_SiMpLe_ Power Member

    hey!
    Já agora outra duvida:
    Usando 2 variaveis e para confirmação de uma if, posso fazer assim?:

    if (resto=0 || resto2=0);

    como posso fazer? tá me a dar erro " the left hand side of the alignment can't be assigned to"
    Obrigado!
     
  7. Baderous

    Baderous Banido

    Código:
     if (resto[COLOR=Red]==[/COLOR]0 || resto2[COLOR=Red]==[/COLOR]0);
    Para fazeres comparações tens que ter 2 sinais de igual. Se só tiveres 1, estás a fazer uma atribuição.
     
  8. So_SiMpLe_

    So_SiMpLe_ Power Member

    ah ok!
    Tks!!!!:003:
     
  9. So_SiMpLe_

    So_SiMpLe_ Power Member

    Já agora desculpem la, tenho o programa assim, mas o problema é que o numero sendo ou nao primo, vai sempre afirmal que é primo, divindo,se a ele proprio ou por 1 será sempre o mesmo resto que seja primo ou nao.
    Como e que confirmo se é mesmo primo??

    #include <stdio.h>
    int main (void)
    {
    int numero,resto2, resto, quociente;
    printf("introduza numero para vericicacao de primo: ");
    scanf ("%d", &numero);
    resto=numero%numero;
    resto2=numero%1;
    if( resto==0 || resto2==0 )
    printf("Numero primo");
    else
    printf("nao e primo");
    return 0;
    }

    Tks
     
  10. arkannis

    arkannis Power Member

    Primeiro convem saberes o que é um numero primo... :lol:

    Isso que tens aí é completamente absurdo, é obvio que o resto da divisao de um numero por ele proprio é sempre 0, e o resto da divisão de um numero por 1 é sempre 0.
    Um numero primo é um numero que não tem divisor inteiro à excepçao dele proprio e do 1. É mais ou menos o contrário do que estás a fazer.

    Pensa lá nisso melhor.
     
  11. hYpe

    hYpe [email protected] Member

    Não, o resto da divisão de um número por 1 é sempre o próprio número.
     
  12. arkannis

    arkannis Power Member

    Não.
    A divisão de um numero por 1 é que é sempre o proprio numero.
     
  13. hYpe

    hYpe [email protected] Member

    Ops, my bad :D

    Tenho que começar a abrir os olhos antes de postar lol

    haha
     
  14. So_SiMpLe_

    So_SiMpLe_ Power Member

    Hey!
    Pois, a minha ideia era caso desse resto 0 na divisao de o numero pr ele proprio(primo) ou por 1 (primo), ia dizer que o numero era primo, mas a forma como fiz dá para qualquer numero, seja ele qual for, se dividido por ele proprio ou por 1 dá sempre resto 0.
    Ja queimei o tico com isto tenho de respirar fundo e olhar outra vez pra tudo senao queimo o teco :D.
    Tks!
     
  15. hYpe

    hYpe [email protected] Member

    Ciclo a começar em 2 e a ir até ao número q queres saber-1.

    Se em alguma iteração, o numero % i for igual a 0, não é primo.
     
  16. tuning

    tuning Power Member

    Então imagina que introduzes 5.

    Além de dividires 5 por 1, e 5 por 5, tens que considerar o 2, 3 e 4 certo?

    Isso consegues com um ciclo que vai dividindo o nº introduzido por (introduzido-1) ou seja, tem que decrementar até ser 1.

    Se nessas divisoes existe um numero, antes de 1, cuja divisao dá resto zero o nº não é primo. (ex: 4%4 = 0, 4%3 diferente 0, 4%2 = 0, 4%1=0)
     
  17. hYpe

    hYpe [email protected] Member

    Se introduzes o 5, ou o 99, que interessa dividir por 1 e por 99?

    A divisão de qq numero por 1, e por ele próprio dá sempre o mesmo resultado, não interessa comparar.

    Interessa sim dividir pelos outros. E com certeza é mais eficiente começar pela divisão em 2 do que em (numero_introduzido -1).
     
  18. tuning

    tuning Power Member

    Não terás mais condições assim? será mais eficiente?
     
  19. arkannis

    arkannis Power Member

    Mais condições?
    A tua forma é que iria ter mais condiçoes, esta assim é so um ciclo for.
    Aliás, nem precisa de fazer comparações desnecessárias, pode parar a meio!

    sendo n o numero:
    for(int i = 2 ; i < n/2 ; i++)

    o resto fazes tu :P
     
  20. Aparicio

    Aparicio /dev/mod
    Staff Member

    Nem é preciso experimentar os divisores até metade do número, basta até à raiz quandrada do número.

    for(int i = 2 ; i*i < n ; i++)

    Mas isto já são optimizações...
     

Partilhar esta Página