commit d90ae819530da4ca0278ba6f54e77999df7a6464
parent 1ffc9dd0d87329f78035a30496a24c336bfc223c
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date: Fri, 29 Mar 2024 01:40:07 -0300
Add solutions of problems 25, 26 and 27
Diffstat:
3 files changed, 93 insertions(+), 0 deletions(-)
diff --git a/solutions/ej25.cpp b/solutions/ej25.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <vector>
+
+bool is_prime(unsigned int n) {
+ std::vector<bool> v(n + 1, true);
+
+ if((n == 0) || (n == 1))
+ return false;
+
+ for (size_t i = 2; i*i < n; ++i)
+ if(v[i])
+ for (size_t j = i; j <= (n/i); ++j)
+ v[i*j] = false;
+
+ return v[n];
+}
+
+int main (void) {
+ unsigned int n;
+
+ std::cout << "Ingrese un valor entero> ";
+ std::cin >> n;
+
+ std::cout << (is_prime(n) ? "Es primo\n" : "No es primo\n");
+ return 0;
+}
diff --git a/solutions/ej26.cpp b/solutions/ej26.cpp
@@ -0,0 +1,35 @@
+#include <iostream>
+#include <iomanip>
+#include <cmath>
+
+typedef struct {
+ float x1, x2;
+} Vec2f;
+
+bool cuadratic_has_real_roots(float a, float b, float c) {
+ return ((b*b)-(4*a*c)) >= 0;
+}
+
+Vec2f cuadratic_roots(float a, float b, float c) {
+ if(cuadratic_has_real_roots(a, b, c) == false)
+ return (Vec2f){0,0};
+
+ Vec2f res;
+ res.x1 = ((-b)+std::sqrt((b*b)-(4*a*c)))/(2*a);
+ res.x2 = ((-b)-std::sqrt((b*b)-(4*a*c)))/(2*a);
+ return res;
+}
+
+int main (void) {
+ float a, b, c;
+ Vec2f p;
+
+ std::cin >> a;
+ std::cin >> b;
+ std::cin >> c;
+
+ p = cuadratic_roots(a,b,c);
+ std::cout << "x1=" << std::left << std::setw(4) << p.x1
+ << "x2=" << std::setw(4) << p.x2 << std::endl;
+ return 0;
+}
diff --git a/solutions/ej27.cpp b/solutions/ej27.cpp
@@ -0,0 +1,32 @@
+// https://en.wikipedia.org/wiki/Least_common_multiple
+// https://en.wikipedia.org/wiki/Greatest_common_divisor
+// https://en.wikipedia.org/wiki/Euclidean_algorithm
+
+#include <iostream>
+
+int find_gcd(int a, int b) {
+ if(!b)
+ return a;
+
+ return find_gcd(b, a % b);
+}
+
+int find_lcm(int a, int b) {
+ return (a * b) / find_gcd(a, b);
+}
+
+int main (void) {
+ int a, b, lcm, gcd;
+
+ std::cin >> a;
+ std::cin >> b;
+
+ lcm = find_lcm(a,b);
+ gcd = find_gcd(a,b);
+
+ std::cout << "a=" << a
+ << "\tb=" << b << std::endl
+ << "lcm=" << lcm << std::endl
+ << "gcd=" << gcd << std::endl;
+ return 0;
+}