本篇部落客要内容:哥德巴赫猜想 輸入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");
}