所谓的孪生素数就是间隔为2的相邻素数,最小的孪生素数是(3,5),100以内还有(5,7),(11,13),(17,19)等共八组,但是随着数字越来越大,孪生素数的分布越来越稀疏。
对普遍公式的描述:“如果自然数Q与Q+2都不能被不大于根号(Q+2)的素数整除,那么Q与Q+2就是一组孪生素数,”用如下公式表示:
Q=p1*m1+b1=p2*m2+b2=.....=pk*mk+bk 其中p1,p2,p3,,,,,pk表示顺序素数2,3,5,,,, b不等于0,b不等于pk-2. 例如:29和29+2不能被不大于根号(29+2)的任何素数整除,29=2m+1=3m+2=5m+4 ,29<49-2(即7的平方)所以29和31是一组孪生素数。
实例:编写从1开始的15组孪生素数
<span style="font-size:18px;">#include<iostream>
using namespace std;
int main()
{
int i,j,n=0,num[10000];
memset(num,0,10000);
for(i=2;i<sizeof(num)/sizeof(int);i++)
{
if(num[i]==0)
{
for(j=2;i*j<10000;j++)
num[i*j]=1;
}
}
for(i=0;n<15;i++)
{
if(num[i]==0&&num[i+2]==0)
{
cout<<i<<" "<<i+2<<endl;
i+=2;n++;
}
}
getchar();
return 0;
}</span>
没有什么不可能!