Cómo encontrar todos los factores de un número natural en C ++, Python y JavaScript
Un factor es un número que divide exactamente un número dado; es decir, divide el número sin dejar residuo. Encontrar los factores de un número con la ayuda de la programación puede ayudarlo a solidificar sus conceptos de bucles, declaraciones condicionales y operadores de módulo.
En este artículo, aprenderá a encontrar todos los factores de un número natural usando C ++, Python y JavaScript.
Planteamiento del problema
Se le da un número natural num , necesita encontrar e imprimir todos los factores distintos de num .
Ejemplo 1 : Sea num = 60.
Los factores de 60 son: 1 2 3 4 5 6 10 12 15 20 30 60
Por lo tanto, la salida es 1 2 3 4 5 6 10 12 15 20 30 60.
Ejemplo 2 : Sea num = 100.
Los factores de 100 son: 1 2 4 5 10 20 25 50100
Por tanto, la salida es 1 2 4 5 10 20 25 50100.
Ejemplo 3 : Sea num = 85.
Los factores de 85 son: 1 5 17 85
Por tanto, la salida es 1 5 17 85.
Enfoque básico para resolver el problema
Puede encontrar todos los factores distintos de un número siguiendo el siguiente enfoque:
- Itere todos los números del 1 al num .
- Si el número divide perfectamente a num , imprima el número.
Usando este enfoque, la complejidad temporal de la solución sería O (n) y el espacio auxiliar requerido sería O (1).
Programa C ++ para encontrar factores de un número
A continuación se muestra el programa C ++ para encontrar todos los factores de un número:
// C++ program to find all factors of a natural number
#include <iostream>
using namespace std;
void findFactors(int num)
{
for(int i=1; i<=num; i++)
{
if(num%i == 0)
{
cout << i << " ";
}
}
cout << endl;
}
int main()
{
int num1 = 60;
cout << "Factors of " << num1 << " are: " << endl;
findFactors(num1);
int num2 = 100;
cout << "Factors of " << num2 << " are: " << endl;
findFactors(num2);
int num3 = 85;
cout << "Factors of " << num3 << " are: " << endl;
findFactors(num3);
int num4 = 66;
cout << "Factors of " << num4 << " are: " << endl;
findFactors(num4);
int num5 = 71;
cout << "Factors of " << num5 << " are: " << endl;
findFactors(num5);
return 0;
}
Producción:
Factors of 60 are:
1 2 3 4 5 6 10 12 15 20 30 60
Factors of 100 are:
1 2 4 5 10 20 25 50 100
Factors of 85 are:
1 5 17 85
Factors of 66 are:
1 2 3 6 11 22 33 66
Factors of 71 are:
1 71
Programa Python para encontrar factores de un número
A continuación se muestra el programa Python para encontrar todos los factores de un número:
# Python program to find all factors of a natural number
def findFactors(num):
for i in range(1,num+1):
if (num%i==0):
print(i, end=" ")
print()
num1 = 60
print("Factors of", num1, "are:")
findFactors(num1)
num2 = 100
print("Factors of", num2, "are:")
findFactors(num2)
num3 = 85
print("Factors of", num3, "are:")
findFactors(num3)
num4 = 66
print("Factors of", num4, "are:")
findFactors(num4)
num5 = 71
print("Factors of", num5, "are:")
findFactors(num5)
Producción:
Factors of 60 are:
1 2 3 4 5 6 10 12 15 20 30 60
Factors of 100 are:
1 2 4 5 10 20 25 50 100
Factors of 85 are:
1 5 17 85
Factors of 66 are:
1 2 3 6 11 22 33 66
Factors of 71 are:
1 71
Programa JavaScript para encontrar factores de un número
A continuación se muestra el programa JavaScript para encontrar todos los factores de un número:
// JavaScript program to find all factors of a natural number
function findFactors(num) {
for(let i=1; i<=num; i++) {
if(num%i == 0) {
document.write(i + " ");
}
}
document.write("<br>");
}
let num1 = 60;
document.write("Factors of " + num1 + " are: " + "<br>");
findFactors(num1);
let num2 = 100;
document.write("Factors of " + num2 + " are: " + "<br>");
findFactors(num2);
let num3 = 85;
document.write("Factors of " + num3 + " are: " + "<br>");
findFactors(num3);
let num4 = 66;
document.write("Factors of " + num4 + " are: " + "<br>");
findFactors(num4);
let num5 = 71;
document.write("Factors of " + num5 + " are: " + "<br>");
findFactors(num5);
Producción:
Factors of 60 are:
1 2 3 4 5 6 10 12 15 20 30 60
Factors of 100 are:
1 2 4 5 10 20 25 50 100
Factors of 85 are:
1 5 17 85
Factors of 66 are:
1 2 3 6 11 22 33 66
Factors of 71 are:
1 71
Enfoque optimizado para resolver el problema
Si observa los factores de un número, aparecen en pares. Por ejemplo, si num = 64, los factores de 64 serían: (1, 64), (2, 32), (4, 16) y (8, 8). Puede utilizar este hecho para optimizar su solución.
Sin embargo, en el caso de dos factores iguales, debe imprimir el factor solo una vez. Como en el ejemplo anterior, (8, 8) son dos factores iguales. Por lo tanto, debe imprimirlos solo una vez.
Por lo tanto, puede utilizar el siguiente enfoque optimizado para encontrar todos los factores distintos de un número:
- Itere todos los números del 1 a la raíz cuadrada de num .
- Si el número divide perfectamente num , significa que el número es un factor de num .
- Ahora compruebe si el segundo factor ( núm / 1er factor) es igual al primer factor.
- Si ambos factores son iguales, imprima el factor una vez.
- Si ambos factores son desiguales, imprima ambos factores.
Usando este enfoque, la complejidad temporal de la solución es O (sqrt (n)) y el espacio auxiliar requerido es O (1).
Programa C ++ que utiliza un enfoque optimizado para encontrar factores de un número
A continuación se muestra el programa C ++ para encontrar todos los factores de un número:
// C++ program to find all factors of a natural number
#include <bits/stdc++.h>
using namespace std;
void findFactors(int num)
{
for(int i=1; i<=sqrt(num); i++)
{
if(num%i == 0)
{
if(num/i == i)
{
cout << i << " ";
}
else
{
cout << i << " " << num/i << " ";
}
}
}
cout << endl;
}
int main()
{
int num1 = 60;
cout << "Factors of " << num1 << " are: " << endl;
findFactors(num1);
int num2 = 100;
cout << "Factors of " << num2 << " are: " << endl;
findFactors(num2);
int num3 = 85;
cout << "Factors of " << num3 << " are: " << endl;
findFactors(num3);
int num4 = 66;
cout << "Factors of " << num4 << " are: " << endl;
findFactors(num4);
int num5 = 71;
cout << "Factors of " << num5 << " are: " << endl;
findFactors(num5);
return 0;
}
Producción:
Factors of 60 are:
1 60 2 30 3 20 4 15 5 12 6 10
Factors of 100 are:
1 100 2 50 4 25 5 20 10
Factors of 85 are:
1 85 5 17
Factors of 66 are:
1 66 2 33 3 22 6 11
Factors of 71 are:
1 71
Programa Python que utiliza un enfoque optimizado para encontrar factores de un número
A continuación se muestra el programa Python para encontrar todos los factores de un número:
# Python program to find all factors of a natural number
import math
def findFactors(num):
i = 1
while i <= math.sqrt(num):
if (num%i==0):
if (num/i == i):
print(i, end=" ")
else:
print(i, num//i, end=" ")
i = i + 1
print()
num1 = 60
print("Factors of", num1, "are:")
findFactors(num1)
num2 = 100
print("Factors of", num2, "are:")
findFactors(num2)
num3 = 85
print("Factors of", num3, "are:")
findFactors(num3)
num4 = 66
print("Factors of", num4, "are:")
findFactors(num4)
num5 = 71
print("Factors of", num5, "are:")
findFactors(num5)
Producción:
Factors of 60 are:
1 60 2 30 3 20 4 15 5 12 6 10
Factors of 100 are:
1 100 2 50 4 25 5 20 10
Factors of 85 are:
1 85 5 17
Factors of 66 are:
1 66 2 33 3 22 6 11
Factors of 71 are:
1 71
Programa JavaScript que utiliza un enfoque optimizado para encontrar factores de un número
A continuación se muestra el programa JavaScript para encontrar todos los factores de un número:
// JavaScript program to find all factors of a natural number
function findFactors(num) {
for(let i=1; i<=Math.sqrt(num); i++) {
if(num%i == 0) {
if (parseInt(num/i, 10) == i)
{
document.write(i + " ");
} else {
document.write(i + " " + parseInt(num/i, 10) + " ");
}
}
}
document.write("<br>");
}
let num1 = 60;
document.write("Factors of " + num1 + " are: " + "<br>");
findFactors(num1);
let num2 = 100;
document.write("Factors of " + num2 + " are: " + "<br>");
findFactors(num2);
let num3 = 85;
document.write("Factors of " + num3 + " are: " + "<br>");
findFactors(num3);
let num4 = 66;
document.write("Factors of " + num4 + " are: " + "<br>");
findFactors(num4);
let num5 = 71;
document.write("Factors of " + num5 + " are: " + "<br>");
findFactors(num5);
Producción:
Factors of 60 are:
1 60 2 30 3 20 4 15 5 12 6 10
Factors of 100 are:
1 100 2 50 4 25 5 20 10
Factors of 85 are:
1 85 5 17
Factors of 66 are:
1 66 2 33 3 22 6 11
Factors of 71 are:
1 71
Comprender los principios básicos de programación
Como programador, es muy importante comprender los principios básicos de programación como KISS (Keep It Simple, Stupid), DRY (No se repita), Responsabilidad única, YAGNI (No lo va a necesitar), Open / Closed, Composición sobre herencia, etc.
Seguir los principios básicos de programación lo convertirá en última instancia en un mejor programador.