O problema Número Aproximado de Primos é bem fácil de resolver. Confira!
Plataforma: URI (BEECROWD)
Problema: 2159
Enunciado:
Schoenfeld e Rosser publicaram em 1962 um artigo descrevendo um valor mínimo e máximo para a quantidade de números primos até n, para n ≥ 17. Esta quantidade é representada pela função (n) e a fórmula é mostrada abaixo (ver fórmula na especificação original do problema).
Sua tarefa é, dado um natural n, calcular o mínimo e máximo do intervalo para o número aproximado de primos até n.
Linguagens: C e C++
Solução:
Basta calcular n / log(n) e 1.25506 multiplicado por este valor. Quem preferir pode salvar n / log(n) em uma variável para não calcular duas vezes.
Na formatação da saída é necessário usar uma casa decimal, então formatei a saída do printf com %.1lf em C e usei fixed e setprecision(1) no fluxo cout em C++.
Código em C:
#include <stdio.h> #include <math.h> int main() { int n; scanf("%i", &n); printf("%.1lf %.1lf\n", n/log(n), 1.25506 * n/log(n)); return 0; }
#include <iostream> #include <iomanip> #include <cmath> using namespace std; int main() { int n; cin >> n; cout << fixed << setprecision(1) << n/log(n) << " " << 1.25506 * n/log(n) << endl; return 0; }