Compute the sum of all positive integers n such that the median of the n smallest prime numbers is n.
He estado unos minutos entendiendo qué quiere decir este problema, y lo que he comprendido es lo siguiente.
Tomamos el número 3, por ejemplo. Los 3 primeros primeros son 2, 3 5, cuya mediana es 3. Cumpliría el enunciado.
Lo mismo pasa con el 4, con el 5, con el 6 y con el 7.
Con el 8, sin embargo, los primos serían 2, 3, 5, 7, 11, 13, 17, 19, y su mediana sería 9.
Con el 9 serían 2, 3, 5, 7, 11, 13, 17, 19, 23, y su mediana 11.
Se trata de sumas los números que sí cumplen que la suma sea la misma que la cantidad de números.
He hecho un pequeño programa para que autocalcule con qué números pasa eso para los 10 mil primeros (o la cantidad que se ponga). Genera un vector de primos y comprueba si su tamaño es igual a su mediana. Sólo se cumple para los números 3, 4, 5, 6 y 7, así que estamos de suerte. Pego aquí el programa por si queréis echarle un ojo.
#include <iostream>
#include <vector>using namespace std;
bool primo(int n){
bool p=true;
for (int i=2;i<=n/2;i++) if (n%i==0) p=false;
return p;
}bool check(vector <int> v){
if (v.size()%2!=0 && (v.size())==v[(v.size()-1)/2]) return true;
else if(v.size()%2==0 && (v.size()*2==(v[v.size()/2]+v[v.size()/2-1]))) return true;
else return false;
}int main(){
vector <int> v(0);
for (int i=2;i<10000;i++){
if (primo(i)) {
v.push_back(i);
if (check(v)) cout<<v.size()<<endl;
}
}
}
No le veo ningún fallo al programa, así que creo que tenemos la solución.
Pues si el resto de gente lo ve bien, la suma de esos números, que es lo que piden, da 25.
Solución: 25.