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 amostra20
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;
}