Ir ao conteúdo

Posts recomendados

Postado

Alguém pode me ajudar com este código? Ele só lê as variáveis e depois não faz mais nada.

#include <stdio.h>

int main(int argc, char *argv[]) {
	int a,b;
	printf("Digite um numero inteiro e positivo: ");
	scanf("%d",&a);
	printf("Digite outro numero inteiro e positivo: ");
	scanf("%d",&b);
	
	int mmc = 1, mdc = 1, primo, p, limite;
	
	while(a != 1 && b != 1){
	    if(a % primo == 0)
	        a = a / primo;
	    if(b % primo == 0)
	        b = b / primo;
	    mmc = mmc * primo;
	 
	   if(a % primo == 0){
	        a = a / primo;
	        if(b % primo == 0)
	            b = b / primo;
	            mdc = mdc * primo;
	   } else
	        if(b % primo == 0)
	            b = b / primo;
	        
	    if(primo == 2) 
	        primo = 3;
        else
        do{
            primo = primo + 2;
            p = 1;
            limite = primo / 2;
            do{
            p = p + 2;
            } while (primo % p != 0 && p < limite);
            } while (primo % p == 0);
	}
	
	printf("MMC = %d\n",mmc);
	printf("MDC = %d",mdc);
	
	
	return 0;
}

 

  • Obrigado 1
Postado

@ningumx @ningumx    precisa inicializar as variáveis ,  e seu código  está em um loop eterno nesse while :

#include <stdio.h>
int main(int argc, char *argv[])
{
  int a,b;
  printf("Digite um numero inteiro e positivo: ");
  scanf("%d",&a);
  printf("Digite outro numero inteiro e positivo: ");
  scanf("%d",&b);

  int mmc = 1;
  int mdc = 1;
  int primo;  /// variavel não inicializada
              /// tem um valor , porém desconhecido
  int p;
  int limite;

  while(a != 1 && b != 1)
  {
    if(a % primo == 0)   /// qual o valor de primo ?
      a = a / primo;
    if(b % primo == 0)
      b = b / primo;
    mmc = mmc * primo;
    if(a % primo == 0)
    {
      a = a / primo;
      if(b % primo == 0)
        b = b / primo;
      mdc = mdc * primo;
    }
    else
    {
      if(b % primo == 0)
        b = b / primo;
      if(primo == 2)
        primo = 3;
      else
        do
        {
          primo = primo + 2;
          p = 1;
          limite = primo / 2;
          do
          {
            p = p + 2;
          }while ( primo % p != 0 && p < limite );
        }while ( primo % p == 0 );
    }
  }
  printf("MMC = %d\n",mmc);
  printf("MDC = %d",mdc);
  return 0;
}

 

Postado

Arrumei o código e acrescentei outras coisas.  A resposta para alguns números está correta, mas para outros, não, por que será?

#include <stdio.h>

int main(int argc, char *argv[]) {
  int resposta = 1;
  while(resposta == 1){
  
  	int a,b;
  	printf("Digite um numero inteiro e positivo: ");
  	scanf("%d",&a);
  	printf("Digite outro numero inteiro e positivo: ");
  	scanf("%d",&b);

  	int mmc = 1;
  	int mdc = 1;
  	int primo;  
  	int i = 1, j = 1, k = 1;

  	if((a > 0) && (b > 0)){
  		while(a != 1 && b != 1){
    		for(primo = 2 ; primo > 0 ; primo++){
        		if((a % primo == 0) && (b % primo == 0)){
            		a = a / primo;
            		b = b / primo;
            		i = i * primo;
            		mdc = mdc * primo;
        		}
        		if((a % primo == 0) && (b % primo != 0)){
            		a = a / primo;
            		j = j * primo;
        		}
        		if((b % primo == 0) && (a % primo != 0)){
            		b = b / primo;
            		k = k * primo;
        		}
        		mmc = i * j * k;
    		}
  		}
  	
  		printf("MMC = %d\n",mmc);
  		printf("MDC = %d\n",mdc);
  	
  	} else 
		printf("Valor invalido!");
		
  	printf("\nCalcular novamente? \n Sim - digite 1 \n não - digite 2\n");
  	scanf("%d",&resposta);
  }

  return 0;
}

 

  • Amei 1
Postado

@ningumx    você está querendo fazer os cálculos como se fosse no papel   ?    , colocando um número ao lado do outro e então ir calculando  ?  ,  um modo de calcular o MMC pode ser assim 

#define _WIN32_WINNT 0x600
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
/*
*
*   esse coDigo Originalmente era do compilador VisualG 3.0
*
*/
int prototipo(int , int , int* );
int main()
{
  HANDLE _h = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleTextAttribute( _h , 15 + (12 << 4 ) );
  int mmc, aux,i,num1=28,num2=40,flg;
  for( i=2; i<=num2; i++ )
  {
    aux = num1 * i;
    flg = aux / num2;   /// divisOes  sucessivas
    /// if( aux % num2 == 0 )  para não usar o operador % mod
    if(flg * num2 == aux )
    {
      mmc = aux;
      break;
    }
  }
  printf("MMC DE %d e %d = %d\n\n\ttecle Enter      \n",num1,num2,mmc);
  getchar();
  SetConsoleTextAttribute( _h , 7 + ( 0 << 4 ) );
  printf("\n\n\n");
  return 0;
}
int prototipo(int a , int b , int* c )
{
  return 0;
}

 

e para colocar os resultados um ao lado do outro como no papel  , precisa adaptação .     

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!