Anteriormente vimos como imprimir los números primos en un rango determinado por el usuario, ahora la idea es pedirle al usuario un número y decirle si es primo o no es primo.
#include<iostream> using namespace std; int main() { int num,c,res,nc=0; cout<<"Introduce un número: "; cin>>num; for(c=1;c<=num;c++) { res=num%c; if(res==0) nc++; if(nc>2) break; } if(nc==2) cout<<"Es primo"; else cout<<"No es primo"; cin.get();cin.get(); }
En sÃ, es lo mismo que el anterior. Para darle mas presentación podemos hacer que no se salga a la primera, sino hasta que se introduzca, por ejemplo, un cero. Esto se hace con un ciclo do while.
#include<iostream> using namespace std; int main() { int num=1,c,res,nc=0,rep=0; while(num!=0) { cout<<"Introduce un número: "; if(rep==1) { cout<<" --> Para salir oprime cero: "; } rep++; cin>>num; for(c=1;c<=num;c++) { res=num%c; if(res==0) nc++; } if(nc==2) cout<<"Es primo\n\n"; else cout<<"No es primo\n\n"; nc=0; } }
¿Alguien sabe porqué la variable num empieza en 1 en este caso?
Muchas gracias por tu gran trabajo, quisiera saber si tambien podrÃas hacer dar un ejemplo para saber si un numero es primo o no pero “sin cliclos”; osea sin for y sin while solo if y else.
Te agredecerÃa mucho tu ayuda.
Sin ciclos lo veo difÃcil. Para saber si un número es primo necesitamos checar si es divisible entre los números menores a él, si resulta que solo se divide entre 1 y él mismo, entonces es primo.
Pero nada es imposible, también puedes checar solo con ifs si es divisible entre 2, luego entre 3, entre 5, 7 y 11, si en alguno de ellos el residuo es 0, no es primo, solo teniendo cuidado de no hacer la división cuando sea el mismo numero (5 y 5 por ejemplo). Pero no hay seguridad que funcione con números grandes.
¿Un poco confuso ese párrafo no? Mejor te contesto con un post, espéralo :)
De nuevo te doy las gracias por toda tu ayuda.
gracias por desir como es un numero primo por fin podre pasa la materi
¿Por qué usas la variable “num” como lÃmite superior del bucle? SerÃa suficiente con alcanzar la parte entera de “sqrt(num)”.
Ahà tienen un buen consejo. Gracias :)
Si hola seria bueno que alguien publicara un codigo que pasandole una cierta cantidad de cifras me mostrara un primo correspondiente, es decir entrando por ejemplo 3 me muetre “997″.
Hola! Me gustarÃa saber
la variable nc qué es???
Un primo es primo porque sólo se divide sin dejar residuo entre dos números: 1 y sà mismo. La variable nc cuenta cuantas veces un número se divide sin dejar residuo.
um! Ingenioso. Muchas Gracias!!!!
De nada :)
ese algoritmo funciona pero es extremadamente ineficiente, además no tiene en cuenta el hecho de que no es necesario iterar entre 1 y num, una mejor alternativa seria iterar entre 1 y la raiz cuadrada de num
Estoy de acuerdo que no es la mejor forma de hacerlo, pero de ahà a que sea ‘extremadamente ineficiente’ hay un salto muy grande. Además de que el público para el que está diseñado este blog son personas ‘no muy expertas’ en programación que busca ayuda para hacer sus tareas.
Muy buen post…
Pero, que es nc? seria bueno que hubieran comientarios describiendo cada linea de codigo par la orientacion los visitantes de la web… GRACIAS.
OMG, Excelente el código
Muy buena la web! QuerÃa aportar un granito de arena optimizando este código un poquito.
La mejora serÃa luego de la siguiente lÃnea
res=num%c;
y simplemente agregar
if(nc>2)
break;
de estar forma evitamos seguir contando al vicio.
Simplemente eso.
Saludos
Tienes razón, gracias por el consejo :)
Alguien puede ayudarme en una tarea? mi correo es melissasantacruz@hotmail.com ^^ es importante u.u
ola quisiera saber como sacar si un numero es primo desde una matriz de un salto especifico.
hola soy nueva en esto y querÃa saber si me podrÃan ayudar con un programa q no me sale
hola como se puede poner el en mismo programa que muestre los primos en un rango y q diga si el numero que ingresaste es primo?
Hola, una pregunta…. Hice un programa en C que me da 10 numeros aleatorios, como puedo aplicar esta “ley de primos” para determina cuantos primos hay entre esos numeros aleatorios ?? :S
Saludos ,.., y muy bueno el blog :P
MUY facil num || numero empieza en cero para que pueda entrar a en ciclo while ya que While si la condicion es falsa se termina hay mismo y no deja entrar :D y como 1 no es igual a 0 dentra, pero si quisiera dar solo una pasada usarÃa un DO WHILE ya que el DO WHILE deja por lo menos hacer un recorrido y al final lee la condición de que ingreses un numero distinto a cero :D xau