題目:
寫一個判別素數的函數,在主程序中驗證哥德巴赫猜想,並列出所有可能
哥德巴赫猜想:任意一個大於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