fork download
  1. /*
  2. /Christian Goldbach a fost un matematician celebru. S-a nascut
  3. la 18 martie 1690 la Konigsberg, Prusia (astazi Kalinsgrad, Rusia) si a murit
  4. la 20 noiembrie 1764 in Moscova. El a studiat dreptul si l-a preocupat, de asemenea,
  5. de matematicam in special de teoria numerelor. Marginal, s-a mai interesat de domenii
  6. ca sumele infinite, teoria curbelor, teoria ecuatiilor. El a calatorit mult in Europa si a avut
  7. discutii fructuoase cu matematicieni celebri, precum Leibniz, Bernoulli, de Moivre, Hermann. O martie parte
  8. din munca sa se reflecta in corespondenta cu Euler. Aceasta corespondenta a durat
  9. aproape 20 de ani si reprezinta unul dintre cele mai importante documente stiintifice din secolul
  10. al XVIII - lea. A lucrat ca profesor de matematica si istoric la noua
  11. infiinta academie din St. Petersburg si a predat printului Petru (viitorul tar Petru al doilea). De la el
  12. provine o celebra conjectura in teoria numerelor. Aceasta este mentionata pentru prima oara
  13. intr-o scrisoare adresata lui Euloer la 7 iulie 1742 in care afirma ca: "se pare ca orice numar mai mare decat 2
  14. se poate scrie ca suma de trei numere prime". Euler a reexprimat aceasta conjectura in forma:
  15. "orice numar intreg pozitiv >=4 poate fi scris ca suma de doua numere prime" denumita si conjectura lui Goldbach.
  16.  
  17. Se considera un tablou bidimensional NxM cu elemente numere naturale in intervalul [4,1000]. Sa se indice pozitiile
  18. elementelor pare ale matricei si toate descompunerile acestora a suma de numere prime, ca in exemplul urmator:
  19. Input:
  20. Dimensiunea matricei:
  21. 2 3
  22. 12 346 789
  23. 44 7 82
  24.  
  25. Output:
  26. Matrix:
  27.   12 346 789
  28.   44 7 82
  29.  
  30. mat[0][0] = 12
  31. 12 = 5 + 7
  32. mat[0][1] = 346
  33. 346 = 29 + 317
  34. 346 = 53 + 293
  35. 346 = 83 + 263
  36. 346 = 89 + 257
  37. 346 = 107 + 239
  38. 346 = 113 + 233
  39. 346 = 149 + 197
  40. 346 = 167 + 179
  41. 346 = 173 + 173
  42.  
  43. mat[1][0] = 44
  44. 44 = 3 + 41
  45. 44 = 7 + 37
  46. 44 = 13 + 31
  47. mat[1][2] = 82
  48. 82 = 3 + 79
  49. 82 = 11 + 71
  50. 82 = 23 + 59
  51. 82 = 29 + 53
  52. 82 = 41 + 41
  53. */
  54. #include <stdio.h>
  55.  
  56. int isPrime(int n) {
  57. int prime = 1,
  58. i;
  59. i = 2;
  60. if(n<=1) return 0;
  61. if(n == 2 || n == 3) return 1;
  62. while(i*i<=n && prime) {
  63. prime = (n%i)!=0;
  64. i++;
  65. }
  66. return prime;
  67. };
  68. int main(int argc, char const *argv[]) {
  69. /*
  70.   int n = 346;
  71.  
  72.   for(int i = 4; i <= n/2; ++i) {
  73.  
  74.   if(isPrime(i) && isPrime(n-i)) {
  75.  
  76.   printf("%d = %d + %d\n", n, i, n - i);
  77.   }
  78.   }
  79.   */
  80.  
  81. int n, //number of the rows
  82. m, //number of the cols
  83. matrix[100][100];
  84. scanf("%d %d",&n,&m);
  85. for (size_t i = 0; i < n ; i++) {
  86. for (size_t j = 0; j < m; j++) {
  87. scanf("%d",&matrix[i][j]);
  88. }
  89. }
  90.  
  91. printf("%s\n", "Matrix:");
  92. for (size_t i = 0; i < n ; i++) {
  93. for (size_t j = 0; j < m; j++) {
  94. printf("%4d ", matrix[i][j]);
  95. }
  96. printf("\n");
  97. }
  98.  
  99. printf("\n");
  100.  
  101. for (size_t i = 0; i < n ; i++) {
  102.  
  103. for (size_t j = 0; j < m; j++) {
  104.  
  105. if(!(matrix[i][j]&1)) {
  106.  
  107. printf("mat[%ld][%ld] = %d\n", i, j, matrix[i][j]);
  108.  
  109. for (size_t k = 2; k <= matrix[i][j]/2; k++) {
  110.  
  111. if(isPrime(k) && isPrime(matrix[i][j]-k)) {
  112.  
  113. printf("%d = %ld + %ld\n", matrix[i][j], k, matrix[i][j] - k);
  114.  
  115. }
  116. }
  117. }
  118. }
  119. printf("\n");
  120. }
  121. return 0;
  122. }
  123.  
Success #stdin #stdout 0.01s 5368KB
stdin
2 3
12 346 789
44 7 82

stdout
Matrix:
  12  346  789 
  44    7   82 

mat[0][0] = 12
12 = 5 + 7
mat[0][1] = 346
346 = 29 + 317
346 = 53 + 293
346 = 83 + 263
346 = 89 + 257
346 = 107 + 239
346 = 113 + 233
346 = 149 + 197
346 = 167 + 179
346 = 173 + 173

mat[1][0] = 44
44 = 3 + 41
44 = 7 + 37
44 = 13 + 31
mat[1][2] = 82
82 = 3 + 79
82 = 11 + 71
82 = 23 + 59
82 = 29 + 53
82 = 41 + 41