腾讯2017年给定一个整数判断有几个质数对

来源:互联网 发布:数据安全保密承诺书 编辑:程序博客网 时间:2024/06/14 03:19

       这个题目意思也就是如果输入10 ,那么就有(3,7),(5,5)两个质数对,因此输出就是2,其实这个思路很简单,就是先找出质数,并存储,然后在遍历存储下来的质数,但是用整数数组存储太浪费。就用C++的bool数组吧。里面也用到了之前的埃氏拉。

      

#include <iostream>using namespace std;bool f[1009] = {};int main(int argc,char *argv[]){    int i = 0;    int j = 0;    f[1] = true;    for(i = 2; i <= 1000; ++i){       if(f[i]){           continue;       }       j = i + i;       while(j <= 1000){           f[j] = true;           j += i;       }    }    int a,ans = 0;    cin >> a;    for(i = 2; i*2 <= a; ++i ){         if(!f[i] && !f[a-i]){            ans++;         }//end for    }    cout << ans << endl;    return 0;}



0 0
原创粉丝点击