Solução em C do Problema 2

#include <stdio.h>

#define VERDADEIRO 1
#define FALSO 0

int main() {
  int n, cateto1, cateto2, hipotenusa;
  int achou;

  printf("Digite o comprimento maximo da hipotenusa: ");
  scanf("%d" , &n);

  for (hipotenusa = 1; hipotenusa <= n; hipotenusa++) {
    achou = FALSO;
    /* testa todos os candidatos a cateto */
    for (cateto1 = 1; cateto1 < hipotenusa && !achou; cateto1++) {
      cateto2 = cateto1; /* cateto1 e' o menor cateto */
      while (cateto1*cateto1 + cateto2*cateto2 < hipotenusa*hipotenusa)
	cateto2++;
      if (cateto1*cateto1 + cateto2*cateto2 == hipotenusa*hipotenusa){
	printf("hipotenusa = %d, catetos %d e %d\n", hipotenusa, cateto1, cateto2);
	achou = VERDADEIRO;
      }
    }
  }

  return 0;
}


Lista de Problemas

História da Computação | Listas de Exercícios | Problemas Resolvidos | macmulti@ime.usp.br