孪生素数是指相差2 的素数对
利用数组:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void find(int m,int n)
{
int i,j,k,a[10000],count=0;
for(i=m+1;i<n;i=i+2)
{
k=(int)sqrt(i);
for(j=2;j<=k;j++)
if(i%j==0) break;
if(j==k+1) {a[count]=i;count++;}
}
for(i=0;i<count;i++)
{
if(a[i+1]-a[i]==2) printf("%d %d\n",a[i],a[i+1]);
}
}
int main()
{ find(100,500);
return 0;
}
不用数组:
#include<stdio.h>
#include<math.h>
int IsPrime(int m);
int main()
{int i,j;
for(i=101;i<500;i+=2)
if(IsPrime(i)*IsPrime(i + 2))
printf("%d %d\n",i,i+2);
return 0;
}
int IsPrime(int m)
{
int i,k;
k=(int)sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
return 0;
return 1;
}