Problemas Clássicos com Laços em C++

Verificação de Número Primo

Dado um inteiro positivo, determine se ele é primo.

Entrada: A primeira linha contém um inteiro N. As próximas N linhas contêm um número inteiro x cada.

Saída: Para cada valor x, imprima "yes" se for primo, caso contrário "no".

Exemplo:


Entrada:
3
897
23
97

Saída:
no
yes
yes

A verificação eficiente usa iteração até a raiz quadrada do número. Evita-se números menores ou iguais a 1 e interrompe-se o laço assim que um divisor é encontrado.

#include <iostream>
using namespace std;

bool isPrime(int num) {
    if (num <= 1) return false;
    for (int i = 2; i * i <= num; ++i)
        if (num % i == 0) return false;
    return true;
}

int main() {
    int n, x;
    cin >> n;
    while (n--) {
        cin >> x;
        cout << (isPrime(x) ? "yes" : "no") << '\n';
    }
    return 0;
}

Aproximação da Constante e

Calcule o valor aproximado de e usando a série: e = 1 + 1/1! + 1/2! + 1/3! + ... Continue somando termos enquanto o valor absoluto do termo atual for maior ou igual a um limiar threshold.

Entrada: Um número real threshold (mínimo 1e-10).

Saída: O valor aproximado de e com 6 casas decimais e o número total de termos somados, separados por espaço.

Exemplo:


Entrada:
0.00001

Saída:
2.718279 9

O cálculo aproveita a relação recursiva entre fatoriais para evitar recálculos. O primeiro termo (1) já está incluído na soma inicial.

#include <iomanip>
#include <iostream>
using namespace std;

int main() {
    double threshold;
    cin >> threshold;

    if (threshold > 1.0) {
        cout << fixed << setprecision(6) << 1.0 << " 1";
        return 0;
    }

    double term = 1.0;   // 1/0!
    double sum = 1.0;
    int count = 1;

    while (term >= threshold) {
        term /= count;   // term agora é 1/count!
        if (term < threshold) break;
        sum += term;
        count++;
    }

    cout << fixed << setprecision(6) << sum << " " << count;
    return 0;
}

Soma dos Dígitos

Dado um número inteiro positivo, calcule a soma de seus dígitos decimais.

Entrada: Vários números inteiros (um por linha), cada um menor que 20000.

Saída: Para cada número, imprima a soma de seus dígitos.

Exemplo:


Entrada:
10
99

Saída:
1
18

O algoritmo extrai dígitos repetidamente usando módulo 10 e divisão inteira por 10.

#include <iostream>
using namespace std;

int main() {
    int n;
    while (cin >> n) {
        int total = 0;
        while (n > 0) {
            total += n % 10;
            n /= 10;
        }
        cout << total << '\n';
    }
    return 0;
}

Tags: C++ Algoritmos numeros-primos serie-de-taylor soma-de-digitos

Publicado em 8-21 20:19