Dúvida na linguagem C

2 respostas
M

Boa noite!!!

Estou fazendo o seguinte exercicio na linguagem C:

Uma função que devolve os números de divisores que x tem.

Estou com dúvida porque quando eu rodo o meu programa ele aparece várias vezes o número 1 como se estivesse em loop …alguem pode me ajudar com relação a isto.

Agradeço desde já.

#include <stdio.h>
#include <stdlib.h>


int divisores(int num);    


int main(int argc, char *argv[])
{
int num, div;


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


div=divisores(num);
printf("O numero possui %d divisores\n",div);


  
  system("PAUSE"); 
  return 0;
}

//Funcao
int divisores(int num)
{
    int i,q,j,div=0,soma;
    
    for(i=1; i<=num;i++)
    {
      if(num%i==0)
      {
     
      div++;
      }
      for(j=1;j<=i;j++)
      {
      q=num/j;         
      }
     printf("Os divisores sao:%d\n",q);
    }
    
     return div;
     
     
}

2 Respostas

zanata

Olá @MaMinet,

Tem um pequeno erro de lógica no seu código.

Para não mexer muito, faça a alteração a seguir:

//Funcao
int divisores(int num)
{
    int i,q,div=0;

    for(i=1; i&lt;=num;i++)
    {
        if(num%i == 0)
        {
            div++;
            q=num/i;
            printf("Os divisores sao:%d\n",q);
        }
    }
    return div;
}

Não "otimizei" nada, mas depois tente entender o que foi feito. Ok?

Bons estudos.

[]s

M

Muito obrigada @Zanata.

O código rodou certinho =D.

Criado 27 de novembro de 2011
Ultima resposta 27 de nov. de 2011
Respostas 2
Participantes 2