Ejemplo de práctica 3 de Python

Python 100例100 ejemplos de Python

Problema:Un número entero, cuando se le suma 100, es un cuadrado perfecto; y al sumarle 168 nuevamente, también es un cuadrado perfecto. ¿Cuál es ese número?

Análisis del programa:

Supongamos que el número es x.

1. Entonces: x + 100 = n2, x + 100 + 168 = m2

2. Calcular la ecuación: m2 - n2 = (m + n)(m - n) = 168

3. Establecer: m + n = i, m - n = j, i * j = 168, i y j al menos uno es par.

4. Se obtiene: m = (i + j) / 2, n = (i - j) / 2, i y j son ambos pares o ambos impares.

5. De 3 y 4 se deduce que i y j son números pares mayores o iguales que 2.

6. Dado que i * j = 168, j >= 2, entonces1 < i < 168 / 2 + 1。

7. A continuación, basta con recorrer todos los valores de i en un bucle para calcular.

Código fuente del programa:

Ejemplo (Python 3.0+)

# Define la función de resolución
def find_integer():
    for i in range(2, 85):  # El rango de i va de 2 a 84
        if 168 % i == 0:  # i es un factor de 168
            j = 168 // i  # Calcula el j correspondiente
            if i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0:  # Asegúrate de que i y j sean ambos pares o ambos impares
                m = (i + j) // 2
                n = (i - j) // 2
                x = n * n - 100
                print(f"x: {x}, m: {m}, n: {n}")

# Llama a la función de resolución
find_integer()

Ejemplo (Python 2.0+)

#!/usr/bin/python
# -*- coding: UTF-8 -*-

for i in range(1,85):
    if 168 % i == 0:
        j = 168 / i;
        if  i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0 :
            m = (i + j) / 2
            n = (i - j) / 2
            x = n * n - 100
            print(x)

El resultado de salida del ejemplo anterior es:

-99
21
261
1581

Python 100例100 ejemplos de Python

Otras extensiones