说明
输出和等于该偶数的所有素数对a和b,按a递增的顺序输出,(a,b)和(b,a)被视为同一个素数对。因此在输出时加一个条件语句i<=(n-i)便可以实现不重复输出
代码
#include<stdio.h>
#include<math.h>
int prime(int m); //判断一个数是否为素数
int main()
{
int i,m;
scanf("%d",&m);
for(i=1;i<=m;i++)
{
if(prime(i)&&prime(m-i)&&i<=(m-i))
printf("%d %d\n",i,m-i);
}
return 0;
}
int prime(int m) //判断一个数是否为素数
{
int i,flag=1;
for(i=2;i<=sqrt(m);i++)
{
if(m%i==0) flag=0;
}
if(flag==0||m==1) return 0;
else return 1;
}
代码 (这个效率稍微高一点)
#include<stdio.h>
#include<math.h>
int prime(int n); //判断一个数是否为素数
int main()
{
int i,n;
scanf("%d",&n);
for(i=1;i<=n/2;i++)
{
if(prime(i)==1&&prime(n-i)==1)
printf("%d %d\n",i,n-i);
}
return 0;
}
int prime(int n) //判断一个数是否为素数
{
int i,flag=1;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0) flag=0;
}
if(flag==0||n==1) return 0;
else return 1;
}