1-goldbach/{v3.0 → v3.1}/GoldbachWorker.h RENAMED
@@ -1,63 +1,67 @@
1
  #ifndef GOLDBACHWORKER_H
2
  #define GOLDBACHWORKER_H
3
 
4
  #include <QThread>
5
 
6
  class GoldbachWorker : public QThread
7
  {
8
  Q_OBJECT
9
  Q_DISABLE_COPY(GoldbachWorker)
10
 
11
  private:
12
  long long number = 0;
13
  QVector<QString>& results;
 
14
 
15
  public:
16
  explicit GoldbachWorker(long long number, QVector<QString>& results, QObject* parent = nullptr);
17
  void run() override;
18
 
19
  signals:
20
  void sumFound(const QString& sum) const;
21
  void calculationDone(long long sumCount) const;
22
  void progressUpdated(int percent) const;
23
 
24
  private:
 
 
 
25
  /**
26
  * @brief Calcula las sumas de Goldbach para el numero dado y las agrega a una pizarra
27
  * @param number El numero dado por el usuario
28
  * @return La cantidad de sumas encontradas
29
  */
30
  long long calculate(long long number);
31
  /**
32
  * Calcula todas las sumas de dos primos que equivalen al numero dado, y las presenta
33
  * en el area resultado. Incrementa la barra de progreso mientras realiza el calculo
34
  * de la conjetura fuerte de Goldbach, por ejemplo:
35
  *
36
  * 4 == 2 + 2
37
  * 6 == 3 + 3
38
  * 10 == 3 + 7 == 5 + 5
39
  *
40
  * @param numero Un numero entero par mayor o igual a 4
41
  * @return la cantidad de sumas de dos primos encontradas
42
  */
43
  long long calculateEvenGoldbach(long long number);
44
  /**
45
  * Calcula todas las sumas de tres primos que equivalen al numero dado, y las presenta
46
  * en el area resultado. Incrementa la barra de progreso mientras realiza el calculo
47
  * de la conjetura debil de Goldbach, por ejemplo:
48
  *
49
  * 7 == 2 + 2 + 3
50
  * 9 == 2 + 2 + 5 == 3 + 3 + 3
51
  *
52
  * @param numero Un numero entero impar mayor o igual a 7
53
  * @return la cantidad de sumas de tres primos encontradas
54
  */
55
  long long calculateOddGoldbach(long long number);
56
  /**
57
  * Retorna true si numero es primo, false si numero no es primo o menor que 2
58
  * Por definicion 1 no es primo ni compuesto, este metodo retorna false
59
  */
60
  static bool isPrime(long long numero);
61
  };
62
 
63
  #endif // GOLDBACHWORKER_H
1
  #ifndef GOLDBACHWORKER_H
2
  #define GOLDBACHWORKER_H
3
 
4
  #include <QThread>
5
 
6
  class GoldbachWorker : public QThread
7
  {
8
  Q_OBJECT
9
  Q_DISABLE_COPY(GoldbachWorker)
10
 
11
  private:
12
  long long number = 0;
13
  QVector<QString>& results;
14
+ int progressPercent = 0;
15
 
16
  public:
17
  explicit GoldbachWorker(long long number, QVector<QString>& results, QObject* parent = nullptr);
18
  void run() override;
19
 
20
  signals:
21
  void sumFound(const QString& sum) const;
22
  void calculationDone(long long sumCount) const;
23
  void progressUpdated(int percent) const;
24
 
25
  private:
26
+ void updateProgress(int newPercent);
27
+
28
+ private:
29
  /**
30
  * @brief Calcula las sumas de Goldbach para el numero dado y las agrega a una pizarra
31
  * @param number El numero dado por el usuario
32
  * @return La cantidad de sumas encontradas
33
  */
34
  long long calculate(long long number);
35
  /**
36
  * Calcula todas las sumas de dos primos que equivalen al numero dado, y las presenta
37
  * en el area resultado. Incrementa la barra de progreso mientras realiza el calculo
38
  * de la conjetura fuerte de Goldbach, por ejemplo:
39
  *
40
  * 4 == 2 + 2
41
  * 6 == 3 + 3
42
  * 10 == 3 + 7 == 5 + 5
43
  *
44
  * @param numero Un numero entero par mayor o igual a 4
45
  * @return la cantidad de sumas de dos primos encontradas
46
  */
47
  long long calculateEvenGoldbach(long long number);
48
  /**
49
  * Calcula todas las sumas de tres primos que equivalen al numero dado, y las presenta
50
  * en el area resultado. Incrementa la barra de progreso mientras realiza el calculo
51
  * de la conjetura debil de Goldbach, por ejemplo:
52
  *
53
  * 7 == 2 + 2 + 3
54
  * 9 == 2 + 2 + 5 == 3 + 3 + 3
55
  *
56
  * @param numero Un numero entero impar mayor o igual a 7
57
  * @return la cantidad de sumas de tres primos encontradas
58
  */
59
  long long calculateOddGoldbach(long long number);
60
  /**
61
  * Retorna true si numero es primo, false si numero no es primo o menor que 2
62
  * Por definicion 1 no es primo ni compuesto, este metodo retorna false
63
  */
64
  static bool isPrime(long long numero);
65
  };
66
 
67
  #endif // GOLDBACHWORKER_H