您的位置:首页 > 其它

素数对-2017腾讯校招(水题,为了给自己留个素数板。。。。)

2018-01-04 20:03 399 查看
时间限制:1秒 空间限制:32768K 热度指数:12182
 算法知识视频讲解


题目描述

给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。

如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))


输入描述:

输入包括一个整数n,(3 ≤ n < 1000)


输出描述:

输出对数


示例1


输入

10



输出

2

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1111;
int isPrime[maxn], prime[maxn], num = 0;
void getPrime(int n){
for(int i = 1; i <= n; ++i){
isPrime[i] = 1;
}
isPrime[0] = isPrime[1] = 0;
for(int i = 2; i <= n; ++i){
if(isPrime[i] == 1){
prime[++num] = i;
}
for(int j = 1; j <= num && prime[j] * prime[j] <= n; ++j){
isPrime[i * prime[j]] = 0;
if(i % prime[j] == 0){
break;
}
}
}
}
int main(){
int n;
cin >> n;
getPrime(n);
int ans = 0;
for(int i = 1; i <= num && prime[i] + prime[i] <= n; ++i){
if(isPrime[prime[i]] && isPrime[n - prime[i]]){
ans++;
}
}
cout << ans << endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数学 素数