3. Factorial de un número
La variable contador
participa en tres sentencias:
a. Una asignación:
contador=1
b. Una decisión:
¿contador<=numero?
c. Un incremento antes del flujo
del ciclo.
contador=contador+1
Este patrón corresponde a
una construcción while.
Recordar que un for es un caso
especial de un while
4. Factorial de un número.
Algoritmo implementado en C utilizando un ciclo while.
int calcularFactorial( int numero )
{
int factorial:
int contador;
factorial=1;
contador=1;
while(contador<=numero)
{
factorial=factorial*contador;
contador=contador+1;
}
return factorial;
}
6. Verificar si un número es primo
int verificarPrimo(int numero){
int primo=1;
int divisor;
int residuo;
divisor=2;
do{
residuo=numero%divisor;
if(residuo==0){
primo=0;
return primo;
}
divisor=divisor+1;
}while(divisor<numero);
return primo;
}
8. Determinar si un número es primo (algoritmo II)
int esPrimo(int numero){
int divisor=1, residuo, totalDivisores=0;
bool primo;
do{
residuo=numero%divisor;
if(residuo==0){
totalDivisores=totalDivisores+1;
}
divisor=divisor+1;
}while(divisor<=numero);
if(totalDivisores<3){
primo=true;
}else{
primo=false;
}
return primo;
}
9. Sumar los números primos que existen entre 100
y 20000
Técnica: Divide y Vencerás.
Número de algoritmos: 2
Hechos:
Ya se tiene un algoritmo que permite determinar si un
número es primo o no.
La suma se incrementa cada vez que se encuentra
un número primo.
El algoritmo termina cuando se alcanza el valor del
límite superior, en este caso 20000
10.
11. bool verificarPrimo(int numero)
{
bool primo;
int divisor;
int residuo;
divisor=2;
do
{
residuo=numero%divisor;
if(residuo==0)
{
primo=false;
return primo;
}
divisor=divisor+1;
}while(divisor<numero);
primo=true;
return primo;
}
int main()
{
int sumaPrimos=0;
int limiteSuperior=20000;
int i;
bool primo;
bool verificarPrimo(int numero);
for(i=1;i<=limiteSuperior;i++)
{
primo=verificarPrimo(i);
if(primo==true)
{
sumaPrimos=sumaPrimos+i;
}
};
return sumaPrimos;
}
12. Calcular la media aritmética de los primeros 30 números
primos.
Técnica: Divide y Vencerás.
Número de algoritmos: 2
Hechos:
Ya se tiene un algoritmo que permite determinar si un número es
primo o no.
La suma se incrementa cada vez que se encuentra un número
primo.
El ciclo termina cuando la cantidad de números encontrados es
30
13.
14. int verificarPrimo(int numero)
{
bool primo;
int divisor;
int residuo;
divisor=2;
primo=1;
do
{
residuo=numero%divisor
if(residuo==0)
{
primo=0;
return primo;
}
divisor=divisor+1;
}while(divisor<numero);
return primo;
}
int main()
{
int sumaPrimos=0;
int contadorPrimos=0;
int i;
bool primo;
bool verificarPrimo(int numero);
int media;
for(i=1;contadorPrimos<=30;i++)
{
primo=verificarPrimo(i);
if(primo==true)
{
sumaPrimos=sumaPrimos+i;
contadorPrimos++;
}
};
media=sumaPrimos/30;
return media;
}
15. Calcular el factorial del tercer número primo
que se encuentre en un rango de números
dado.
Técnica: Divide y Vencerás.
Número de algoritmos: 3
Hechos:
Ya se tiene un algoritmo que permite determinar si
un número es primo o no.
Ya se tiene un algoritmo que permite determinar el
factorial de un número.
16.
17. Int verificarPrimo(int numero)
{
bool primo;
int divisor;
int residuo;
divisor=2;
primo=1;
do
{
residuo=numero%divisor;
if(residuo==0)
{
primo=0;
return primo;
}
divisor=divisor+1;
}while(divisor<numero);
return primo;
}
int factorial( int numero)
{
int factorial:
int i;
factorial=1;
for(i=1;i<=numero;i++)
{
factorial=factorial*i;
}
return factorial;
}
18. int main()
{
int limiteInferior , limiteSuperior, resultado, i=0, numeroPrimo=0;
bool esPrimo;
int verificarPrimo(int numero);
int factorial( int numero);
limiteInferior=40; //Valor predeterminado para verificar
limiteSuperior=400; //Valor predeterminado para verificar
do
{
If( limiteInferior<=limiteSuperior ){
esPrimo=verificarPrimo( limiteInferior );
If (esPrimo== 1){
numeroPrimo=limiteInferior;
i=i+1;
}
}else{
i=4; // break;
}
}while(i<3);
resultado=factorial(numeroPrimo);
return resultado;
}
19. Ejercicio: (Sin consultar en Internet)
Se tiene una pareja de conejos juntos en un lugar cerrado y se desea
saber cuántos son creados a partir de este par cuando su naturaleza
es: parir un par cada mes, y los nacidos han de parir, desde el
segundo mes, un par también.
Crear un algoritmo que permita deducir la cantidad de conejos que
existirán después de un número de meses dado.
Resuelto por Alejandro de Pisa en 1202
TIP: Determinar de forma “manual”
Cuantos pares existirán en el mes 1, 2,3
3,4 y 6....luego deducir un patrón del cual
Se pueda derivar un algoritmo.
20. Los contenidos originales en esta obra, se distribuyen bajo una Licencia Creative Commons
Atribución-Compartir Igual 3.0 Unported.
Atribución – Compartir igual.
De conformidad a esta licencia:
Usted es libre para:
● Compartir — copiar y redistribuir el material en cualquier medio o formato
● Adaptar — remezclar, transformar y crear a partir del material
Para cualquier propósito, incluso comercialmente
Bajo los siguientes términos:
● Atribución — Usted debe darle crédito a esta obra de manera adecuada: si se suministran, usted debe
dar el nombre del creador y de las partes atribuidas, un aviso de derechos de autor, una nota de
licencia, un aviso legal, y un enlace al material; e indicando si se han realizado cambios. Puede
hacerlo en cualquier forma razonable, pero no de forma tal que sugiera que usted o su uso tienen el
apoyo del licenciante
● Compartir igual — Si usted mezcla, transforma o crea nuevo material a partir de esta obra, usted podrá
distribuir su contribución siempre que utilice la misma licencia que la obra original..
Las marcas, nombres de productos y empresas, logos, figuras, citas, contenidos no originales de GISEPROI y
otras referencias; son propiedad de sus respectivos dueños y no están cubiertos por esta licencia.