[牛 exercícios do curso] Encontre os dois números primos mais próximos que compõem um número par

Descrição do título

Qualquer número par (maior que 2) pode ser composto por dois números primos. Existem muitas situações em que dois números primos formam um número par. Esta questão requer a saída de um par de números primos que forma um número par especificado com o menor diferença entre os dois números primos.
Esta questão contém vários conjuntos de entrada de amostra.

Digite a descrição:

Insira um número par

Descrição de saída:

Produzir dois números primos


Entrada de amostra

20

Resultado

7
13

Análise de tópico

  • Primeiro, devemos determinar se um número é primo. Aqui, o intervalo de números primos é julgado de 2 à raiz quadrada de N. Se houver um número neste intervalo que pode ser divisível por n, isso significa que n não é um número primo; caso contrário, n é um número primo.
  • Encontre números primos adequados de 1/2 desse número par para ambos os lados, para que você possa garantir que a diferença entre os dois números primos seja a menor. Se encontrá-la, você pode pular para fora do loop.

Código de referência

#include <iostream>
#include <math.h>

using namespace std;

bool isPrime(int n)
{
    int sq = sqrt(n);
    for(int i = 2; i <= sq; ++i)
    {
        if(n%i == 0)
            return false;
    }
    return true;
}

int main()
{
    int num;
    while(cin >> num)
    {
        int half = num/2;
        int i = 0;
        for(i = half; i > 2; ++i)
        {
            if(isPrime(i) && isPrime(num-i))
                break;
        }

        cout << num-i << endl << i << endl;
    }
    return 0;
}

Acho que você gosta

Origin blog.51cto.com/14289099/2621903
Recomendado
Clasificación