/**
title: Ano Lectivo 2003/04 -- Resolução da Ficha nº2
ficheiro: pp203resf02.c autor: PRH versao de: 2004.03.15
.uso do printf() e do scanf()
.uso de condicoes
.uso de ciclos diversos
**/
Divisores de um número (Ficha nº2 - Exercício 1)
/**
title: Divisores de um número (Ficha nº2 - Exercício 1)
**/
#include <stdio.h>
/*----- programa principal -----*/
int main( )
{int num=0, divisor;
printf("Escreva o número cujos divisores quer calcular: ");
while (num<=0) { scanf("%d",&num); }
printf("Lista dos Divisores de %d:\n",num);
for (divisor=1; divisor<=num; divisor++)
{
if ((num%divisor)==0) { printf("%d\n",divisor); }
}
return(0);
}
Divisores de um número -- 2ª versão, optimizada (Ficha nº2 - Exercício 1)
/**
title: Divisores de um número -- 2ª versão, optimizada (Ficha nº2 - Exercício 1)
**/
#include <stdio.h>
#include <math.h>
/*----- programa principal -----*/
int main( )
{int num=0, divisor, lim;
printf("Escreva o número cujos divisores quer calcular: ");
while (num<=0) { scanf("%d",&num); }
printf("Lista dos Divisores de %d:\n",num);
lim = (int)sqrt((double)num);
for (divisor=1; divisor<=lim; divisor++)
{
if ((num%divisor)==0) { printf("um par de divisores é %d e %d\n",divisor, num/divisor); }
}
return(0);
}
Menor Múltiplo Comum de dois números (Ficha nº2 - Exercício 3)
/**
title: Menor Múltiplo Comum de dois números (Ficha nº2 - Exercício 3)
**/
#include <stdio.h>
/*----- programa principal -----*/
int main( )
{int N,M,MMC;
int maior;
printf("Indique os números cujo MMC quer calcular: ");
scanf("%d%d",&N,&M);
MMC = maior = (N>=M)? N: M;
while (((MMC%N)!=0)||((MMC%M)!=0))
{
MMC += maior;
}
printf("O Menor Multiplo Comum entre %d e %d é: %d \n",N,M,MMC);
return(0);
}
Tudo ao contrário, ou "Números Invertidos" (Ficha nº1 - Exercício 5)
/**
title: Tudo ao contrário, ou "Números Invertidos" (Ficha nº1 - Exercício 5)
**/
#include <stdio.h>
/*----- programa principal -----*/
int main( )
{int orig= -1;
int inverte;
printf("Indique o Numero Original (>=0) que quer inverter: ");
while (orig<0) { scanf("%d",&orig); }
inverte = 0;
while (orig)
{
proxdig = orig%10;
orig = orig/10;
inverte = inverte*10 + proxdig;
}
printf("O numero invertido e: %d \n",inverte);
return(0);
}
Os N primeiros Números de Fibonacci (Ficha nº2 - Exercício 6)
/**
title: Os N primeiros Números de Fibonacci (Ficha nº2 - Exercício 6)
**/
#include <stdio.h>
#define MAX 20
/*----- função de Fibonacci -----*/
int fib( int n )
{int f;
if ((n==0)||(n==1))
{ f = 1; }
else { f = fib(n-1) + fib(n-2); }
return(f);
}
/*----- programa principal -----*/
int main( )
{int N;
int res;
printf("Os %d primeiros números de FIBONACCI são: \n",MAX);
for ( N=0; N<MAX; N++ )
{
res = fib(N);
printf("%6d \n",res);
}
return(0);
}