fork download
  1. #include <stdio.h>
  2.  
  3. //関数のプロトタイプ宣言
  4. void goldbach(int n);
  5. void q(int a, int b);
  6. int prime(int n);
  7.  
  8. //main関数
  9. int main(void){
  10. int a;
  11.  
  12. scanf("%d", &a);
  13. goldbach(a);
  14.  
  15. return 0;
  16. }
  17.  
  18. // ゴールドバッハ予想
  19. void goldbach(int n){
  20. int i;
  21. for(i=2; i<=n/2; i++){ // 片方だけ調べる
  22. if(prime(i) && prime(n-i)){
  23. q(i, n-i);
  24. }
  25. }
  26. }
  27.  
  28. //結果表示
  29. void q(int a, int b){
  30. static int count = 0; // 呼ばれるたびに値が保持
  31. count++;
  32. printf("%2d: %d = %d + %d\n", count, a+b, a, b);
  33. }
  34.  
  35. //素数判定
  36. int prime(int n){
  37. int i;
  38. if(n <= 1) return 0; // 1以下は素数じゃない
  39.  
  40. for(i=2; i<n; i++){
  41. if(n % i == 0){
  42. return 0;
  43. }
  44. }
  45. return 1;
  46. }
  47.  
Success #stdin #stdout 0s 5324KB
stdin
24
stdout
 1: 24 = 5 + 19
 2: 24 = 7 + 17
 3: 24 = 11 + 13