-----------------------------------------------------------------------
 MAC-115   -  Malhas encaixadas  
=======================================================================

/*
 * Sabe-se que um número da forma n^3 (n ao cubo) é igual a soma de n ímpares
 * consecutivos.
 * Exemplo: 1^3= 1, 2^3= 3+5, 3^3= 7+9+11,  4^3= 13+15+17+19,...
 * Dado m, determine os ímpares consecutivos cuja soma é igual a n^3,
 * para n assumindo valores de 1 a m
 */

#include <stdio.h>

int main() {
  int n, m, i, inicio, soma;

  printf("Digite o valor de m: ");
  scanf("%d", &m);

  for (n = 1; n <= m; n++) {
    soma = 0;
    for (inicio = 1; soma != n * n * n; inicio = inicio + 2) {
      soma = 0;
      for (i = 0; i < n; i++)
	soma = soma + inicio + 2 * i;
    }
    inicio = inicio - 2;
    printf("%d*%d*%d = %d", n, n, n, inicio);
    for (i = 1; i < n; i++)
      printf("+%d", inicio+2*i);
    printf("\n");    
  }

  return 0;
}

--------------------------------------------------------
/*
 * Outra solucao
 */ 


#include <stdio.h>


int main() {
  int m,        /* dado de entrada */
      n, i, 
      inicio;   /* primeiro dos impares de uma sequencia que soma n^3 */

  printf("Digite o valor de m: ");
  scanf("%d", &m);

  inicio = 1;
  for (n = 1; n <= m; n++) {
    printf("%d*%d*%d = %d", n, n, n, inicio);
    for (i = 1; i < n; i++)
      printf("+%d", inicio + 2 * i);
    inicio = inicio + 2 * n;           /* inicio da proxima sequencia */
    printf("\n");    
  }

  return 0;
}

==================================

/* 
 * arquivo: decomposicao.c
 * -----------------------
 * Dado um número inteiro positivo, determine a sua decomposição em fatores
 *  primos calculando também a multiplicidade de cada fator.
 */

#include <stdio.h>

int main()
{
  int n;       /* numero dado */
  int fator;   /* candidato a fator do numero dado */
  int mult;    /* multiplicidade de fator */


  printf("Decomponho um numero dado em fatores primos.\n");
  printf("Entre com o numero (> 1) a ser decomposto: ");
  scanf("%d", &n);
  printf("Decomposicao de %d em fatores primos:\n", n);  

  fator = 2;
  while (n > 1) 
    {
      mult = 0;
      while (n % fator == 0) 
        {
          mult ++;
          n = n / fator; 
        }
      if (mult != 0) 
        {
          printf("  fator %d multiplicidade %d\n", fator, mult); 
        }
      fator++; 
    }

  return 0;
}
=================================================================