Hola, tengo que resolver un ejercicio en C, que consiste en escribir una función con el siguiente prototipo: int primoMayor(int num). La función recibe un número en la variable num y ha de devolver el mayor de los primos comprendido entre 2 y el valor de num. Esta función ha de valerse para esto de llamadas a la función esPrimo().
El programa principal debe solicitar un número mayor o igual a 2, que llame a la función primoMayor() y muestre el valor que devuelva por pantalla.
Este sería un ejemplo del programa:
Introduce un número superior a 1: 7
El mayor primo comprendido entre 2 y 7 es 7.
Esto es lo que llevo por el momento, no tengo claro como hacer el bucle que determine que número de todos los primos es el mayor, a ver si podéis ayudarme, gracias.
El programa principal debe solicitar un número mayor o igual a 2, que llame a la función primoMayor() y muestre el valor que devuelva por pantalla.
Este sería un ejemplo del programa:
Introduce un número superior a 1: 7
El mayor primo comprendido entre 2 y 7 es 7.
Esto es lo que llevo por el momento, no tengo claro como hacer el bucle que determine que número de todos los primos es el mayor, a ver si podéis ayudarme, gracias.
Código [Seleccionar]
#include <stdio.h>
#include <math.h>
int esPrimo(int num) {
int i;
for (i=2; i<=sqrt(num); i++) {
if (num%i == 0) {
return 0;
}
}
return 1;
}
int primoMayor(int num){
int n, mayor;
mayor=0;
for (n=2;n<=num;n++)
{
if (esPrimo(n)>mayor)
mayor=esPrimo(n);
}
}
int main() {
int num, n, i, mayor;
do {
printf("Introduce un número superior a 1: ");
scanf("%d", &num);
} while (num<0);
primoMayor(num);
if (primoMayor(num)){
for(n=2;n<=num;n++){
if (esPrimo(n))
mayor=primoMayor(num);
}
}
else
printf("El número %d no es primo.\n", num);
return 0;
printf("El mayor primo comprendido entre 2 y %d es %d", num, mayor);
return 0;
}