C++实现找素数对
我今天上午肝的两万字博客没审核通过,说什么版权问题,讲的是&&&&"""“某讯VdeoVp”""&&&&相关的知识,需要的私信我,我给你发源码和资源
好废话不多说这次的任务是找出n以内所有相差为2素数的素数对,如果没有输出empty,用的是C++
- 首先用素数筛法找出n以内所有素数,存到数组里
- 遍历数组,找出相差为2的数,存到数组里
- 遍历输出数组
完整源码
#include <iostream>
using namespace std;
int isPrime[10001];
int Prime[10001];
int Pair[10001];
int is_Prime(){
int n,sum=0;
cin >> n;
for(int i=0;i<n;i++){
sum += 1;
isPrime[i] = 0;
}
for(int i=2;i<=n;i++){
if(isPrime[i]==0){
for(int j=2;j*i<=n;j++){
isPrime[i*j] = 1;
}
}
}
return sum;
}
int Prime_Pair(int sum){
int n,a=0,b=0,c=1;
for(int i=2;i<=sum;i++){
if(isPrime[i]==0){
Prime[a] = i;
a += 1;
}
}
for(int i=0;i<a;i++){
if(Prime[i+1]-Prime[i]==2){
Pair[b] = Prime[i];
Pair[b+c] = Prime[i+1];
b += 1;
c += 1;
}
}
return b;
}
int main(){
int a=1;
int sum = is_Prime();
int n = Prime_Pair(sum);
if(n==0){
cout << "empty" << endl;
}else{
for(int i=0;i<n;i++){
cout << Pair[i] << " " << Pair[i+a] << endl;
a += 1;
}
}
return 0;
}