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. int count = 0;
  22. for(i=2; i<n; i++){
  23. if(prime(i) && prime(n-i)){
  24. count++;
  25. q(i, n-i);
  26. }
  27. }
  28. }
  29.  
  30. //結果表示
  31. void q(int a, int b){
  32. static int count = 0; // 呼ばれtabi値が保持
  33. count++;
  34. printf("%2d: %d = %d + %d\n", count, a+b, a, b);
  35. }
  36.  
  37. //素数判定
  38. int prime(int n){
  39. int i;
  40. int sosuu = 1;
  41.  
  42. for(i=2; i<n; i++){
  43. if(n%i==0){
  44. sosuu = 0;
  45. break;
  46. }
  47. }
  48. return sosuu;
  49. }
  50.  
  51.  
Success #stdin #stdout 0.01s 5316KB
stdin
24
stdout
 1: 24 = 5 + 19
 2: 24 = 7 + 17
 3: 24 = 11 + 13
 4: 24 = 13 + 11
 5: 24 = 17 + 7
 6: 24 = 19 + 5
 7: 24 = 23 + 1