如果不大于指定整数n的3个素数之和仍为素数,则把这3个素数称为一个基于n的全素组,编程实现从n个数中找出最大的全素组以及全素组的个数
#include<iostream>
using namespace std;
#include<math.h>
void main(){
int i,j,n;
int i2,j2,k2;
int z,t;
int p[9000];
int q[9000];
int w;
int k;
int s;
int m,max;
cout<<"请输入n"<<endl;
cin>>n;
for(i=3;i<=3*n;i++){
z=(int)sqrt(i);t=1;
for(j=3;j<=z;j++){
if(i%j==0){t=0;break;}
if(t==1)p[i]=1;
}
}
w=0;max=0;
for(i=3;i<=n;i++){
if(p[i]==1) {q[w]=i; w++;}
}
for(i=1;i<=w-1;i++)
for(j=i+1;j<=w-1;j++)
for(k=j+1;k<=w;k++)
{
s=q[i]+q[j]+q[k];
if(p[s]==1){
m++;
if(s>max)
{max=s;i2=q[i];j2=q[j];k2=q[k];}
}
}
cout<<"共有"<<m<<"个全素组"<<endl;
if(m>0) {
cout<<"最大全素组为"<<endl;
cout<<i2<<" "<<j2<<" "<<k2<<" "<<max<<endl;
}
}