Programa en C para obtener los factores primos de un número entero:
“`c
#include
void primeFactors(int n) {
// Imprimir los factores primos
while (n % 2 == 0) {
printf(“%d “, 2);
n = n / 2;
}
for (int i = 3; i * i <= n; i = i + 2) {
while (n % i == 0) {
printf("%d ", i);
n = n / i;
}
}
if (n > 2)
printf(“%d “, n);
}
int main() {
int num;
printf(“Ingrese un número entero positivo: “);
scanf(“%d”, &num);
printf(“Los factores primos del número %d son: “, num);
primeFactors(num);
return 0;
}
“`
Este programa en C obtiene los factores primos de un número entero positivo ingresado por el usuario. Imprime en pantalla los factores primos en orden ascendente.
#include <stdio.h>
#include <string.h>
int primefac(int n, int count)
{
while (n > 2)
{
int i = 2;
while (n % count == 0)
{
if (count % i == 0 && count == i)
{
printf("%d\n", count);
n = n / count;
primefac(n, 3);
}
else
{
i++;
}
}
count++;
}
}
int main()
{
int n, i = 3, j = 2; // i para obtener factores primos, j para verificar si i es primo o no
// n toma la entrada
scanf("%d", &n);
while (n % 2 == 0)
{
printf("%d\n", 2); // imprime si el número tiene factores de 2;
n = n / 2; // se elimina el factor de n;
}
primefac(n, 3);
return 0;
}
“`</string.h></stdio.h>
davy.ai
Error en el código para obtener factores primos
El código está diseñado para obtener los factores primos del número dado. Sin embargo, hay un error en el código que resulta en una repetición de la salida del último factor.
El error está en la recursión llamada en el bucle while dentro de la función
primefac
. Cuandon
es divisible porcount
, el código verifica sicount
es un número primo o no al iterar a través dei
. Si se encuentra quecount
es un número primo, lo imprime y llama a la funciónprimefac
conn
dividido porcount
.Sin embargo, después de esta llamada recursiva, el bucle continúa con el mismo valor de
count
, lo que resulta en la segunda aparición del mismo factor en la salida. Para solucionar esto, el bucle debería continuar con el siguiente valor decount
.Aquí está la función
primefac
corregida:Con esta corrección, el código debería producir la salida correcta para cualquier entrada dada.