Mi solucion Ejercicio 5 nacional 2012 nivel 2
Mi solucion ejercicio 5 nacional que dice:
Gastón escribe para cada numero N entero positivo la tira de numeros 1³+N, 2³+N, 3³+N, 4³+N, 5³+N, 6³+N, ...,1000³+N.
Encontrar los 10 valores mas chicos de N para los cuales su correspondiente tira con tiene ningun numero primo.
Codigo:
#include <iostream> #include <vector> #include <stdlib.h> #include <stdio.h> #include <time.h> #include <cmath> using namespace std; //solucion de Ariel Nowik //Gastón escribe para cada numero N entero positivo la //tira de numeros 1³+N, 2³+N, 3³+N, 4³+N, 5³+N, 6³+N, ...,1000³+N. //Encontrar los 10 valores mas chicos de N para //los cuales su correspondiente tira con tiene ningun numero primo. vector <int> divisores(int numero){ //funcion para obtener los divisores de un numero vector <int> divi; for (int p = 1;p*p-1 < numero;p++){ if (numero % p == 0){ int np = numero / p; divi.push_back(p); divi.push_back(np); } } return divi; } int primo(int numero){ //funcion para averiguar si un numero es primo vector <int> div = divisores(numero); if (div.size() == 2){ return true; } return false; } int hacer_tira(int numero){ //funcion para revisar las condiciones del enunciado for (int s = 1;s < 1001;s++){ if (primo(s*s*s+numero) == true){ return false; } } return true; } int main(){ int n = 0; bool resuelto = false; vector <int> soluciones; //hacemos que se pruebe n hasta que se hallen 10 valores que cumplan con las condiciones while (resuelto != true){ if (hacer_tira(n) == true){ //si se cumplen se imprime y almacena n en un vector soluciones.push_back(n); cout<<"------------------------------------"<<endl; cout<<"SOLUCION "<<soluciones.size()<<":"<<endl; cout<<"N = "<<n<<endl; cout<<"------------------------------------"<<endl; if (soluciones.size() > 9){ resuelto = true; // si ya se imprimieron 10 soluciones se termina } } n++; } cout<<"escriba algo y presione enter para continuar . . ."<<endl; int h; cin>>h; }
Salida del programa:
------------------------------------
SOLUCION 1:
N = 8
------------------------------------
SOLUCION 2:
N = 27
------------------------------------
SOLUCION 3:
N = 64
------------------------------------
SOLUCION 4:
N = 125
------------------------------------
SOLUCION 5:
N = 216
------------------------------------
SOLUCION 6:
N = 343
------------------------------------
SOLUCION 7:
N = 512
------------------------------------
SOLUCION 8:
N = 729
------------------------------------
SOLUCION 9:
N = 1000
------------------------------------
SOLUCION 10:
N = 1331
------------------------------------