Dev - C++ - Numeros del 1 al 16 Primos o no Primos

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Numeros del 1 al 16 Primos o no Primos

Publicado por Dany (4 intervenciones) el 26/06/2017 23:56:34
Hola a todos.

Tengo que sacar esta tarea de números primos necesito hacer lo siguiente:

1. Que el programa solo lea números del 1 al 16
2 En base al numero ingresado por pantalla saber si este es primo o no
3. Enviar mensaje por pantalla con el resultado.

Hasta ahora el profesor nos ha enseñado If, Else y Printf, lo que he leído en los foros es que la mayoría lo hace con Clclos While y For, se puede hacer solo con If?

Me pueden ayudar por favor.

De antemano Gracias

DS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Dionicio
Val: 168
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Numeros del 1 al 16 Primos o no Primos

Publicado por Dionicio (57 intervenciones) el 27/06/2017 05:28:57
Claro que se puede. Necesitarías verificar que los números comprendidos en ese rango no sean divisibles por 2, 3. Si estos números dividen a cualquier número introducido este será NO primo por el contrario serán primos, claro evitando que 2 y 3 sean omitidos puesto que son números primos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
...
//Si está en el rango, comparar
if(numero >= 1 && numero <= 16){
	//Si el número es divisible entre 2 o 3 no es primo, 
	//siempre y cuando sea diferente de dichos números
	if(numero%2 == 0 && numero != 2){
		resto = numero%2;
	}
	if(numero%3 == 0 && numero != 3){
		resto = numero%3;
	}
 
	if(resto != 0){
		printf("El número %d es primo\n",numero);
	}else{
		printf("El número no es primo\n");
	}
}else{
	printf("Le fallaste al programa el número debe estar entre 1-16\n");
}
...

Si verificas todos los números primos posibles entre 1 y 16 son 1,2,3,5,7,11,13. Cualquier otro número en este rango no será primo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 28
Ha disminuido su posición en 4 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Numeros del 1 al 16 Primos o no Primos

Publicado por JESUS DAVID ARIZA ROYETH (9 intervenciones) el 27/06/2017 21:23:57
Complementando un poco la excelente aportación de Dionicio, vale destacar que el número 1 ya no es considerado primo dado que los números primos actualmente son los que tienen dos divisores exactamente, y exactamente lo que hay que comprobar como dice él es que en ese rango los números no sean divisibles por 2 o 3 y esto se puede hacer con condicionales if :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
using namespace std;
bool esprimo(int);
int main(int argc, char** argv) {
	int number;
  cout << "por favor ingrese un valor en el rango de 1 a 16: ";
  cin >> number;
  if(number >= 1 && number <= 16){
  if (esprimo(number)) {
  	printf("el valor ingresado es primo\n");
  }
  else {
  	printf("el valor ingresado NO es primo\n");
  }
 
}
else {
	printf("el valor debe estar en el rango de  1 a 16\n");
}
 
	return 0;
}
bool esprimo(int numero)
{
	int resto;
	if(numero%2 == 0 && numero != 2){
		return false;
	}
	if((numero%3 == 0 && numero != 3) || numero == 1){
		return false;
	}
 return true;
}



si se hace con ciclos for entonces el programa podría aplicar a más rangos y quedaría así :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
using namespace std;
bool esprimo(int);
int main(int argc, char** argv) {
	int number;
  cout << "por favor ingrese un valor en el rango de 1 a 16: ";
  cin >> number;
  if(number >= 1 && number <= 16){
  if (esprimo(number)) {
  	printf("el valor ingresado es primo\n");
  }
  else {
  	printf("el valor ingresado NO es primo\n");
  }
 
}
else {
	printf("el valor debe estar en el rango de  1 a 16\n");
}
 
	return 0;
}
bool esprimo(int number)
{
	if (number == 1) {
		return false;
	}
	int i;
	for (i=2; i<number; i++)
	{
		if (number % i == 0)
		{
			return false;
		}
	}
 
	return true;
}


un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de gregory
Val: 82
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Numeros del 1 al 16 Primos o no Primos

Publicado por gregory (34 intervenciones) el 27/06/2017 21:56:38
el algoritmo del numero primo. es lineal
Es un for que recorre desde 2 hasta n ; donde n es el numero que desea saber si es primo o no
m es el iterador
1
2
3
4
5
6
7
8
9
m=2;//si hace con 7//siempre comenzara desde 2 
n=5// m nunca va entrar en la condicion porque solo es divisible entre 7 
while(m<n)
{
 if((n%m)==0)
{
 //no es primo puesto que un numero primo solo es divisible por el mismo
}m++;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 10
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Numeros del 1 al 16 Primos o no Primos

Publicado por Dany (4 intervenciones) el 30/06/2017 17:17:07
Gracias a todos por su estupenda colaboracion.

He optado por la opcion 1 de Dionicio, pero recalco todas las he probado e igual funcionan correctamente.

Por lo cual les pido cierren el tema.

Muchas Gracias por la ayuda.

DS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar