FUNCIONES EC C++ Y PYTHON
Publicado por deisy (2 intervenciones) el 29/06/2020 05:12:55
Necesito ayuda con este ejercicio de funciones
Diseñar un algoritmo en seudocódigo e implementarlo en C++ y Python, para que tenga al menos dos funciones para ingresar desde el teclado una secuencia de números enteros mayores que cero y para cada uno de ellos que se calcule y despliegue los números primos próximos (están más cerca) y equidistantes (igual distancia).
tengo esto, pero al corres tiene algunos errores, por ejemplo cuando ingreso el numero 1, me sale -1,1-3 y no 1,2 como se espera.
Diseñar un algoritmo en seudocódigo e implementarlo en C++ y Python, para que tenga al menos dos funciones para ingresar desde el teclado una secuencia de números enteros mayores que cero y para cada uno de ellos que se calcule y despliegue los números primos próximos (están más cerca) y equidistantes (igual distancia).
tengo esto, pero al corres tiene algunos errores, por ejemplo cuando ingreso el numero 1, me sale -1,1-3 y no 1,2 como se espera.
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
39
40
41
42
43
44
45
46
47
48
// PrimProxiEquidis
#include <math.h>
#include <iostream>
using namespace std;
// Prototipos de funciones:
int EsPrimo(int);
// Declaracion de funciones:
int main()
{
int N, Distancia, Continua;
while (1) {
cout << "Ingresar un entero (salir < 1): ";
cin >> N;
if (N < 1) break;
Continua = 1;
Distancia = (N % 2 == 0 ? 1 : 2);
cout << "Numeros primos proximos y equidistantes a: " << N << ": ";
do {
if (EsPrimo(N - Distancia)) {
cout << (N - Distancia) << " ";
Continua = 0;
}
if (EsPrimo(N)){
cout << N << " ";
Continua = 0;
}
if (EsPrimo(N + Distancia)) {
cout << (N + Distancia);
Continua = 0;
}
Distancia += 2;
}
while (Continua);
cout << endl << endl;
}
return 0;
}
int EsPrimo(int X) {
// Descartar valores < 4:
if (X < 4) return 1;
// Descartar los pares > 3:
if (X % 2 == 0) return 0;
// Analizar los impares > 3:
int Divisor = 3, Raiz = ceil(sqrt(X));
while (Divisor <= Raiz && X % Divisor != 0)
Divisor += 2;
return Divisor > Raiz;
}
Valora esta pregunta


0