题解 | #素数对#

素数对

https://www.nowcoder.com/practice/c96d6acc025541ffb79c579688f8d003

#include <iostream>
using namespace std;
const int maxn = 1e4 + 5;
int prime[maxn];
bool p[maxn] = {false};
int num = 0;

// 获得素数表
void Find_Prime() {
    for (int i = 2 ; i < maxn ; i++) {
        if (p[i] == false) {
            prime[num++] = i;
            for (int j = i + i ; j < maxn ; j += i) {
                p[j] = true;
            }
        }
    }
}


// 双指针(通过首尾指针遍历查找)
void Find_n(int n) {
 int i = 0, j = num - 1;
 int sum = 0;
 while(i <= j){
     if(prime[i]+prime[j]==n){
         sum++;
         j--;
         i++;
     }else if(prime[i]+prime[j]>n){
         j--;
     }else{
         i++;
     }

 }
 cout<< sum <<endl;
}

int main() {
    int n;
    Find_Prime();
    while (cin >> n) { 
        Find_n(n);
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 11:15
点赞 评论 收藏
分享
05-26 22:25
门头沟学院 Java
Java小肖:不会是想叫你过去把你打一顿吧,哈哈哈
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 11:33
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务