[ Foro de C++ ]
Del curso de Aprender a programar tengo el siguiente ejercicio de escribir un número como sus factores primos.
Este es mi codigo:
#include <iostream>
#include <math.h>
using namespace std;
int main(){
int n,p,s,r;
cin >> p ;
cout << p << "=";
for (n=2; n<=p; n++){
for (s=p; s>=1; s--){
r=pow(n,s);
if (p%r==0){
cout << n <<"x";
p=p/n;
}
}
}
}
Cosas que me gustaría mejorar:
Quitar la x final del ultimo divisor, Ej: 60=2x2x3x5x
Si el número es primo que lo diga el programa.
Como puedo hacer esto? Gracias de antemano
Imagino que te refieres a este ejercicio:
(4.7.2) Crear un programa que descomponga un número (que teclee el usuario) como producto de su factores primos. Por ejemplo, 60 = 2 · 2 · 3 · 5
http://aprendeaprogramar.com/mod/resource/view.php?id=491
Hay dos soluciones sencillas:
- Anadir 1 al final, de modo que tu resultado quedaría 60=2x2x3x5x1
- No poner signos de multiplicación, con lo que tu resultado quedaría 60=2 2 3 5 1
Una de las soluciones elegantes y sencillas es usar una variable booleana, para escribir "x n" excepto si se trata del primer divisor, y, en ese caso, escribes sólo "n".
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)