天天看點

【牛客】[程式設計題] 查找組成一個偶數最接近的兩個素數 C++

1.題目描述

連結

https://www.nowcoder.com/questionTerminal/f8538f9ae3f1484fb137789dec6eedb9?toCommentId=289324

任意一個偶數(大于2)都可以由2個素數組成,組成偶數的2個素數有很多種情況,本題目要求輸出組成指定偶數的兩個素數內插補點最小的素數對

輸入描述: 輸入一個偶數

輸出描述: 輸出兩個素數

2.思路解析

  1. 先寫一個判斷是不是素數的函數
  2. 循環輸入n值
  3. i值從n的一半開始,這裡–操作
  4. n-i 相當于++操作,然後同時判斷是不是素數
  5. 是的話就直接列印,退出
  6. 不是就繼續循環

3.代碼實作

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

// 判斷是不是素數
bool Prime(int n)
{
    int i = 2;
    for(i; i <= sqrt(n); i++)
    {
        if(n % i == 0)
            return false;
    }
    if(i > sqrt(n))
        return true;
}


int main()
{
    int n = 0;
    // 循環輸入
    while(cin >> n)
    {
        // 這裡i + (n - i) 正好等于n,是以直接判斷同時是不是素數,是的話那就直接列印
        // 因為兩個數相加等于n值,隻要判斷是不是素數即可
        for(int i = n / 2; i >= 2; i--)
        {
            if(Prime(i) && Prime(n - i))
            {
                // 列印
                cout << i << endl << n - i<< endl;
                break;
            }
        }
    }
    return 0;
}
           

繼續閱讀