验证哥德巴赫猜想大家都知道一点吧。我们现在不是想证明这个结论,而是对于任给的一个不小于6的偶数,来寻找和等于该偶数的所有素数对。做好了这件实事,就能说明这个猜想是成立的。
要求输入一个不小于6的偶数m ,输出和等于该偶数的所有素数对a和b,按a递增的顺序输出,(a,b)和(b,a)被视为同一个素数对。
如:44=3+41
44=7+37
44=13+31
程序定义一个prime()函数和一个main()函数,prime()函数判断一个整数n是否是素数,其余功能在main函数中实现。
素数=奇数+2,奇数一定就是素数,所以循环从3开始,每次加2,保证了都是奇数即素数。
求素数时,从2开始到sqrt(x)就可以判断是否为素数了,没必要都进行一遍。
#include <math.h>
#include <stdio.h>
int prime(int i)
{
int q=1,c,j;
c=(int)sqrt(i);
for(j=2;j<=c;j++){
if(i%j==0){
q=0;}
}
return q;
}
int main()
{
int num;
int i,k,w,e;
scanf("%d",&num);
for(i=3;i<=num/2;i=i+2){
w=1;
e=0; // w和e做判断素数用
w=prime(i);
if(w==1)
{
k=num-i;
e=prime(k);
}
if(w==1 && e==1)
printf("%d %d\n",i,k);
}
}
标签:prime,验证,int,44,偶数,素数,哥德巴赫猜想
From: https://www.cnblogs.com/JK8395/p/16915424.html