un poco de ayuda con C++ por favor

Iniciado por [LOH]lordofhell, Septiembre 15, 2014, 12:46:14 AM

Tema anterior - Siguiente tema

[LOH]lordofhell

Me dejaron de tarea hacer un codigo en C++ usando Dev-C++ donde tengo que hacer un programa en el que se verifique si un numero es primo(que solo se puede dividir entre 1 y si mismo para quienes no recuerden/sepan) o no, pero tengo que hacerlo usando la operacion "for" y no se me ocurre muy bien el como hacerlo, me ayudan? :3

Sami

Lee, que tienes que aprender

http://msdn.microsoft.com/en-us/library/b80153d8.aspx

Si te atrancas pues ya pregunta, cabrón jajajaja
Soy el mayor de los frikis!

eldraku

encontré este codigo en google:

Spoiler
Comprobar si un número es primo en Lenguaje C
Un número primo es aquel que solo es divisible entre 1 y él mismo.
Con lo cual solo tiene 2 divisores.

Así que tendremos que usar el ejercicio anterior de calcular los divisores de un número, y comprobar que solo sean dos para que el número sea primo.

{

int num1,i,a;

a=0; */Esta variable la vamos a usar para contar los divisores del número introducido, la inicializamos a 0*/

printf("Introduce un numero: ");
scanf("%d",&num1);

for(i=1;i<=num1;i++)
{
    if(num1%i==0) // si num1 módulo de i es 0, incrementamos a en 1.
    a++;
}


if(a==2); /*Si al final del bucle, a vale 2, el número es primo, porque tiene solamente 2 divisores.
{
    printf("El número es primo");
}
else
{
    printf("El número no es primo");
}


}
[close]

[LOH]lordofhell

Cita de: eldraku en Septiembre 15, 2014, 12:25:53 PM
encontré este codigo en google:

Spoiler
Comprobar si un número es primo en Lenguaje C
Un número primo es aquel que solo es divisible entre 1 y él mismo.
Con lo cual solo tiene 2 divisores.

Así que tendremos que usar el ejercicio anterior de calcular los divisores de un número, y comprobar que solo sean dos para que el número sea primo.

{

int num1,i,a;

a=0; */Esta variable la vamos a usar para contar los divisores del número introducido, la inicializamos a 0*/

printf("Introduce un numero: ");
scanf("%d",&num1);

for(i=1;i<=num1;i++)
{
    if(num1%i==0) // si num1 módulo de i es 0, incrementamos a en 1.
    a++;
}


if(a==2); /*Si al final del bucle, a vale 2, el número es primo, porque tiene solamente 2 divisores.
{
    printf("El número es primo");
}
else
{
    printf("El número no es primo");
}


}
[close]

creo que le entiendo, pero solo para definirlo bien, el "%" que es? recuerdo que me dijieron que era algo de modulo o no se, hace una operacion pero no recuerdo cual D:

eldraku

¿el resto de dividir algo entre algo?

mírate los operadores, ahí te paso un tutorial bueno bueno  ;)
http://c.conclase.net/curso/

Arrovf

#5
Efectivamente el % (modulus) es el resto de una division (no confundir con porcentaje), por ejemplo para saber si un numero es par o impar:
(cualquier numero)%2 que de 0 significa que es par, de lo contrario impar.

Para saber si un numero es primo (que se divide solo por 1 y por si mismo):

tenemos que hacer un bucle (for o while) que empieze en 1 y termine en el numero que estamos comprobando, dentro del bucle tendriamos un if que comprueba si el (numero) % (numero actual) es igual a 0, en caso de que lo sea se aumenta en 1 una variable auxiliar que previamente hemos iniciado a 0 fuera del for.

Despues del for hacemos un if comprobando si la variable auxiliar es <= 2, en caso de que lo sea significa que el numero es primo.

Esto es más o menos la explicación teórica, el codigo del señor eldraku hace esto mismo, aunque yo cambiaria el if(a==2) por if(a<=2), asi si el numero a comprobar es el 1 pues funcionaría bien, además parece que hay un ";" justo despues de esa linea del if, creo que ese ";" se deberia de quitar.

El modulus se usa igual en practicamente todos los lenguajes de programación.