Ir para conteúdo
Fórum Script Brasil
  • 0

Não consigo resolver Fatoração Prima


HPortuga

Pergunta

Sou estudante do primeiro semetre em Ciência da Computação. Preciso resolver um problema em C sobre fatoração prima e não consigo desenvolver um algoritmo consistente que resolva o problema. Alguém consegue me ajudar? Segue o enunciado: 

Obs: Para este problema só é permitido o uso de estruturas de repetição, seleção e arranjos. Nada de funções por enquanto

Escreva um programa que receba um inteiro positivo e forneça a sua fatoração prima, isto e, expresse os inteiros como um produto de primos e indique se o número ´e primo.

A entrada ´e dada pelo arquivo fatprimos.in. A primeira linha contém um inteiros n que representa a quantidade de vezes que o programa será executado. As demais linhas apresentam os números que seão fatorados.

fatprimos.in

4

12

28

37

101

A saída ´e dada pelo arquivo fatprimos.sol e consiste em escrever para cada número a sua fatoração prima e a mensagem primo caso o número seja primo.

fatprimos.sol

12 = 2 2 3

28 = 2 2 7

37 = 37 primo

101 = 101 primo

Editado por HPortuga
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Até então o código está assim:

// Programa: FatPrimos.C
// Programador: Matheus H. F. Soares
// Data: 26/07/2016
// Este programa recebe um inteiro positivo e
// fornece a sua fatoração prima, ou seja, 
// expressa os inteiros como um produto de primos
// identifica se o número é primo

#include<stdio.h>

int main(void)
{
	int inteiro;
	int divisor;
	int p;
	int numDiv;
	int primo[10];
	int produto;
// Pré: UmInt1 == inteiro

// Passo 1. Leia o inteiro
   scanf("%d", &inteiro);
   
// Passo 2. Verifique se o número é primo
// Passo 2.1. Conte quantos divisores o número assume
   divisor = 2;
   p = 0;
   numDiv = 1;
   while (divisor <= inteiro)
   {
	   if (inteiro % divisor == 0)
	   {
		  primo[p] = divisor;   // Divisor é primo e fica armazenado em p
		  numDiv = numDiv + 1;
		  p++;
	   }
	   divisor++;
   }

// Passo 2.2. Se o número for primo, imprima
   if (numDiv == 2)
	   printf("%d primo\n", inteiro);
	  
// Passo 2.3. Se não for, expresse o inteiro com produto de primos
   else
   {
// Passo 2.3.1. Fatore o número em números primos
      p = 0;
	  produto = 1;
	  printf("%d = ", inteiro);
      while (produto != inteiro)
	  {
		  if (inteiro % produto == 0)
		  {
			  produto = produto * primo[p];
			  printf("%d ", primo[p]);
		  }
		  else
		     p++;
		  printf("\n");
	  } 
   }

// Pós: UmInt1 = Primos{p1, p2,..., pn} p<UmInt1
// && Mensagem

   return 0;
   
}

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...