紧急!!!求C++语言设计程序 求2--100所有的亲密素数对的个数(X为素数,X+2也为素数)

如题所述

第1个回答  2012-04-27
Cobe Blocks 版:(VC6.0版有点不一样,有疑问再问我好了)

#include <iostream>
#include <math.h>
using namespace std;

int main()
{
int i,j,m,n=0,sum=0,a[98]={2};//a[0]=2
for (i=2;i<=100;i++)
{
if(i%2!=0)
{
for(m=3;m<=sqrt(i);m=m+2)
if(i%m==0)
break;
if(m>sqrt(i))
{
n++;
a[n]=i;//将素数存到数组a中
}
}
}
//for(int s=0;s<=n;s++) cout<<a[s]<<' ';想输出素数就加上这行
for(int s=0;s<=n-2;s++)
{
if(a[s+2]-a[s]==2)
{
sum++;
// cout<<a[s]<<' '<<a[s+2]<<'\n'; //想输出亲密素数的话就加上
}
if( a[s+1]-a[s]==2)
{
sum++;
//cout<<a[s]<<' '<<a[s+1]<<'\n';//想输出亲密素数的话就加上
}
}
cout<<sum<<"对"<<endl;//输出对数
return 0;
}
输出结果:8
(输出亲密素数时才有:
3 5
5 7
11 13
17 19
29 31
41 43
59 61
71 73

8对

Process returned 0 (0x0) execution time : 0.187 s
Press any key to continue.
第2个回答  2012-04-27
#include <iostream>
using namespace std;
int main()
{
int isprim(int x);
void printprim(int low,int high);
printprim(2,100);
return 0;
}
int isprim(int x)
{
int i;
if(x%2==0)
return 0;
else
{
for(i=2;i<=x/2;i++)
{
if(x%i==0)
break;
}
if(i>x/2)
return 1;
else return 0;
}
}
void printprim(int low,int high)
{
if(low%2==0)
low++;
if(high%2==0)
high--;
int i;
for(i=low;i<=high-2;i=i+2)
{
if(isprim(i)&&isprim(i+2))
cout<<i<<" "<<i+2<<endl;
}
}追问

这个是二级水平吗?怎么感觉好高级····

第3个回答  2012-04-27
#include<iostream>
using namespace std;
void main()
{
int i=2,j,k,m=0;
for(i;i<=100;i++)
{

for(j=2;j<i;j++)
{
if(i%j==0)
break;
}
if(j==i)
for(k=2;k<(i+2);k++)
if((i+2)%k==0)
break;
if(j==i&&k==(i+2))
{
cout<<"("<<i<<","<<i+2<<")"<<endl;
m++;
}
}
cout<<"共"<<m<<"组"<<endl;
}