[牛 конечно упражнения] Найдите два ближайших простых числа, которые составляют четное число

Название Описание

Любое четное число (больше 2) может состоять из двух простых чисел. Существует множество ситуаций, в которых два простых числа составляют четное число. Этот вопрос требует вывода пары простых чисел, которая образует указанное четное число с наименьшим разница между двумя простыми числами.
Этот вопрос содержит несколько наборов примеров ввода.

Введите описание:

Введите четное число

Описание выхода:

Выведите два простых числа

Пример
ввода

20

Вывод

7
13

Тематический анализ

  • Во-первых, мы должны определить, является ли число простым. Здесь диапазон простых чисел оценивается от 2 до квадратного корня n. Если в этом интервале есть число, которое может делиться на n, это означает, что n не является простым числом; в противном случае n является простым числом.
  • Найдите подходящие простые числа от 1/2 этого четного числа в обе стороны, чтобы убедиться, что разница между двумя простыми числами является наименьшей.Если вы ее найдете, вы можете выйти из цикла.

Код ссылки

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

рекомендация

отblog.51cto.com/14289099/2621903