Unamonos los programadores de taringa y compartamos nuestros codigos, ya sea java, C, C++, php, jsp, html, css, python.... etc etc etc.. Enterate tambien de las innovaciones en el software y nuevas distribuciones de Microsoft, Linux y MacOS
Ver más- 1,702 Miembros
- 560 Temas
- 308 Seguidores
[Consulta]Programa que dice si un numero es primo o no
La otra vez tenia que hacer un programa que diha si un numero es primo o no, para eso deberiamos tendriamos que hacer esto:
Dividir al divisor y si el resto es 0 mostrar que NO es primo en caso contrario que SI es. Y ir sumando al dividendo 1 mientras que sea.
Este es mi codigo
#include <iostream>
using namespace std;
int main()
{
int r; //El numero el cual el usuario introduzira su valor y sera testeado para saber si es primo o no
int u;
bool ES; //Sera usada para saber si es primo o no
cin >> r;
for (int z = 1; z < r; z++) //Se crea 'z' con valor uno, al evaluarse con 'x' hara 'z++' por lo cual empezara dividiendo entre 2
{
u = r % z;
if (u == 0) {ES = false; break;} else ES = true;
}
if (ES == true) cout << "Este numero es primo" << endl;
else cout << "Este numero no es primo" << endl;
}
P.D. Ya probe con este codigo pero sigue sin dar resultado
#include <iostream>
using namespace std;
int main()
{
int r; //El numero el cual el usuario introduzira su valor y sera testeado para saber si es primo o no
int u;
bool ES; //Sera usada para saber si es primo o no
cin >> r;
for (int z = 1; z < --r; z++) //Se crea 'z' con valor uno, al evaluarse con 'x' hara 'z++' por lo cual empezara dividiendo entre 2
{
u = r % z;
if (u == 0) {ES = false; break;} else ES = true;
r += 1;
}
if (ES == true) cout << "Este numero es primo" << endl;
else cout << "Este numero no es primo" << endl;
}
Ninguno de los dos funciona, siempre me sigue diciendo que no son primos, en pocas palabras pongo 5 y me dice que no es primo.
Gracias por su ayuda
- 0Calificación
- 0Seguidores
- 164Visitas
- 0Favoritos
Global
Argentina
Chile
Colombia
España
México
Perú
Uruguay
Venezuela
9 respuestas
#include<stdio.h>
int is_prime(int);
int main(void)
{
int n;
printf("Ingrese un numero:");
scanf("%d",&n);
if(is_prime(n))
printf("%d es primon",n);
else
printf("%d no es primon",n);
return 0;
}
int is_prime(int n)
{
int i;
for(i=2;i<n;i++)
if(!(n%i))
return 0;
return 1;
}
Yo hago así: (C++)

<?
#include <iostream>
using namespace std;
bool esPrimo(long long int num) {
if(num==2) return true;
if(num==1 or num%2==0) return false;
for(int i=3;i*i<=num;i+=2) if(num%i==0) return false;
return true;
}
int main() {
long long int num;
cout << "Introduzca un número: ";
cin >> num;
if(esPrimo(num)) cout << "El número " << num << " es primo.n";
else cout << "El número " << num << " no es primo.n";
return 0;
}
?>
Tal vez no compile porque lo hice de frente en el comentario, pero la idea está
Gracias por los ejemplos
Pero yo quiero saber porque no funciona el mio.
no lo quize revisar porque esta mui desordenado, ordena tu codigo y usa nombres de variables coherentes >,<
ok lo hare con mas comentarios y variables con buenos nombres
Bueno esto seria lo mismo con variables con nombre cambiado y comentarios diferentes, solamente que no se porque no compila, siendo la misma cosa que el anterior pero con nombres cambiados
#include <iostream>
using namespace std;
int main()
{
int introduzido, resto; //introduzido es la variable la cual sera evaluada para saber si es primo o no
cin >> introduzido; //El usuario da valor a introduzido
bool EsPrimo; //No nesesita explicasion jajaja
for (int divisor = 1; divisor < introduzido; divisor++;)//Esto es lo que yo "explique" antes de poner mi codigo
{
resto = introduzido % divisor;
if (resto == 0) {EsPrimo = false; break;} else EsPrimo = true; //Si no me equivoco el 'break' debe estar ahi, no?
}
if (EsPrimo == true) cout << "Este numero es primo" << endl;
else cout << "Este numero no es primo" << endl;
return 0;
}
Los errores dan en la lineas 10, osea el bucle 'for' y no se porque, da tres errores
1. Expected ')' before ';' token
2. expected primary-expression before ')' token
3. expected ';' before ')' token
cuando digo ordenado me refiero a codigo indentado, con los bloques separados y claros
cuando digo variables coherentes me refiero a nombres cortos y explicativos.
los errores eran i deveria comensar de 2 porque los incrementos son alfinal del bloque dentro del for, tenias un ; demas en el for
tu codigo correjido, trate de cambiarlo lo menos posible aunque se podria mejorar... deverias leer algu ntexto sobre convencion de nombres...
#include <iostream>
using namespace std;
int main(void)
{
int n, resto;
bool es_primo;
cin >> n;
for (int i= 2;i<n;i++)
{
resto = n % i;
if (resto == 0) {
es_primo = false;
break;
} else
es_primo = true;
}
if (es_primo)
cout << "Este numero es primo" << endl;
else
cout << "Este numero no es primo" << endl;
return 0;
}
PD: con que estas aprendiendo? (que tutorial,libro,loquesea)?
Gracias el unico problema era que le di 1 al 'divisor', y entonces simpre dividira en 1 y nunca sera primo, ahora funciona bien dandole a divisor el valor de 2. Tomare en cuenta lo de tener mas separado y eso. A yo aprendo en c.conclase.com y un loquesea llamado Algoritmia y Programacion para Ingenieros.