题目:
写一个判别素数的函数,在主程序中验证哥德巴赫猜想,并列出所有可能
哥德巴赫猜想:任意一个大于4的偶数都等于两个素数之和
思路分析:
- 写一个判断素数的函数,不会可以参照我之前写的素数判断
- 将偶数分为a和b
- 用循环判断2到偶数开方之间的a是否为素数
- 在已经判断a为素数后,b = 偶数 - a,再判断这个b即可
代码实现:
#include<stdio.h>
#include<math.h>
int cons(int i) //cons function is used to judgement of prime number
{
int n = 0, _prime_ = 1;
for(n = 2; n <= sqrt(i); n++)
{
if(i%n == 0)
{
_prime_ = 0;
}
}
return _prime_;
}
void prime(int num)
{
int a = 0, b = 0;
int n = 0, p1 = 1, p2 = 1;
for(a = 2; a <= num; a++)
{
p1 = 1;
p1 = cons(a);
if(p1 == 1)
{
b = num - a;
if(b > 0 && b <= a)
{
p2 = 1;
p2 = cons(b);
if(p2 == 1)
{
printf("%d = %d + %d\n",num,a,b);
}
}
}
}
}
int main()
{
int num = 0;
printf("Input a number above 4:\n");
scanf("%d",&num);
prime(num);
return 0;
}
运行结果:
如输入256