天天看點

C語言 哥德巴赫猜想 輸入4~100之間的偶數, 寫出這個偶數拆成兩個素數之和的方法

本篇部落客要内容:哥德巴赫猜想 輸入4~100之間的偶數, 寫出這個偶數拆成兩個素數之和的所有方法。見篇尾處。先看原理:

飲水思源:

哥德巴赫猜想通常指:任何大于2的偶數都可以寫成兩個素數的和。

别稱通常指關于偶數的哥德巴赫猜想。

例如:

4=2+2, 6=3+3,8=5+3,

10=7+3,12=7+5,14=11+3,……

素數:除1和本身無其他因數,又稱質數,2是最小的素數。

關于哥德巴赫猜想的實戰案例 :輸入4~100之間的偶數, 寫出這個偶數拆成兩個素數之和的所有方法。

如18=7+11, 18=13+5。

算法思想:

1.将大于2的偶數拆成任意兩個數的和

2.判斷這兩個數是否為素數

先解決偶數問題:可以用for循環這樣寫:

for(k=4;k<=100;k++)      

接着把這個偶數 拆成任意 兩個素數的和

即k=a+b;

用數學方法判斷a,b是否為素數,a,b範圍可以這麼寫:

寫法一樣:

2~根号a

2~根号b

代碼如下:

#include<stdio.h> 
#include<stdlib.h>
#include<math.h>
main()
{ int k,a,b,i,count1,count2;
  for(k=4;k<=100;k=k+2)
  { for(a=2;a<=sqrt(k);a++)
    { //判斷a是否為素數
      count1=0;
      for(i=2;i<=a-1;i++) 
      { if(a%i==0)
        { count1++;
          break;
        }
      }
      if(count1==0)//如果a是質數
      { b=k-a;//判斷b是否為素數 
        count2=0;
       for(i=2;i<=b-1;i++)
       {  if(b%i==0)
        { count2++;
            break;
         }
        } 
        if(count2==0)//如果b也是素數
          { printf("%d=%d+%d\n",k,a,b);
          break;//列印這個解并跳出循環 
          } 
    } 
  }
}
system("color f4");
}