17 votos

Demostrar que todos los enteros pares $n \neq 2^k$ son expresables como una suma de enteros positivos consecutivos

¿Cómo puedo demostrar que cualquier número entero par $n \neq 2^k$ es expresable como suma de enteros positivos consecutivos ( más de 2 número entero consecutivo positivo)?
Por ejemplo:

14 = 2 + 3 + 4 + 5
84 = 9 + 10 + ... + 15

n = sum (k + k+1 + k+2 + ...) 
n ≠ 2^k

29voto

Lorin Hochstein Puntos 11816

La suma de los enteros de $1$ a $n$ es $n(n+1)/2$ . La suma de los enteros de $k$ a $k+n$ es entonces $$\begin{align*} k+(k+1)+\cdots+(k+n) &= (n+1)k + 1+\cdots+n\\ & = (n+1)k + \frac{n(n+1)}{2} \\ &= \frac{(n+1)(2k+n)}{2}.\end{align*}$$

Por lo tanto, $a$ puede expresarse como la suma de enteros consecutivos si y sólo si $2a$ se puede factorizar como $(n+1)(2k+n)$ .

Supongamos que $a$ es una potencia de $2$ . Entonces $2a$ es una potencia de $2$ Así que $(n+1)(2k+n)$ debe ser un poder de $2$ . Si queremos evitar los negativos, y también evitar la expresión trivial como una suma con un sumando, debemos tener $n\geq 1$ y $k\gt 0$ . Pero las paridades de $n+1$ y de $2k+n$ son opuestas, por lo que este producto no puede ser una potencia de $2$ a menos que $n+1=1$ (que requiere $n=0$ ) o $2k+n=1$ (que requiere $k=0$ ). Por lo tanto, ningún poder de $2$ puede expresarse como una suma de al menos dos enteros positivos consecutivos. En particular, $8$ , $16$ , $32$ etc. no puede expresarse así.

Por otro lado, supongamos que $a$ es uniforme pero no es una potencia de $2$ . Si podemos escribir $2a = pq$ con $p\gt 1$ e impar, $q$ incluso, y $q\geq p+1$ y, a continuación, establecer $n=p-1$ y $k=(q-p+1)/2$ da la descomposición deseada. Si esto no se puede hacer, entonces cada vez que factorizamos $2a$ como $pq$ con $p\gt 1$ impar, tenemos $q\lt p+1$ . Entonces podemos establecer $n=q-1$ y $k = (p+1-q)/2$ .

Así, los poderes de $2$ son los únicos números pares que no son expresables como la suma de al menos dos enteros positivos consecutivos.

Añadido. La OP ha excluido ahora los poderes de $2$ pero también ha exigido que la suma contenga estrictamente más de dos sumandos; es decir $k\gt 0$ y $n\gt 1$ . Con las descomposiciones anteriores, el único caso en el que podríamos tener $n=1$ es si $2a=pq$ con $p$ impar, $p\gt 1$ y $q=2$ . Pero esto es imposible, ya que $a$ se supone que es par, y esto lleva a $2a = 2p$ con $p$ impar.

15voto

Oli Puntos 89

El argumento de @Arturo Magidin de que los poderes de $2$ no son representables puede extenderse a una "fórmula" para el número de representaciones de cualquier número entero positivo. Sin razón alguna, utilizamos una notación ligeramente diferente.

Dejemos que $w$ sea un número entero positivo. Buscamos enteros $m\ge 0$ , $n>m$ tal que $$w=(1+2+\cdots +n)-(1+2+\cdots +m).$$ Con un poco de manipulación, podemos reescribir esto como $$2w=(n-m)(n+m+1).$$ Temporalmente, permitimos $n-m=1$ aunque esto corresponde a expresar $w$ como la "suma" de un entero.

Las cifras $n-m$ y $n+m+1$ son de paridad opuesta y tienen producto $2w$ . Tenga en cuenta también que $n-m<n+m+1$ .

Ahora toma dos números cualesquiera $x$ , $y$ de paridad opuesta cuyo producto es $2w$ . Establecer $n-m=x$ y $n+m+1=y$ . Podemos resolver para $n$ y $m$ y obtener una representación de $w$ como una suma de enteros consecutivos (de nuevo, posiblemente sólo uno de esos enteros.)

Obtenemos tal $x$ , $y$ de paridad opuesta como sigue. Sea $2w=2^k q$ donde $q$ es impar. Expresa $q$ como producto de dos enteros positivos $u$ y $v$ no necesariamente distintos. Multiplicar uno de $u$ o $v$ (decir $v$ ) por $2^k$ y que $x$ sea el menor de $u$ y $2^k v$ y $y$ el más grande.

Así que el número de representaciones de $w$ como suma de enteros positivos consecutivos es $d(q)$ el número de divisores de $q$ . Si no queremos permitir la representación trivial de $w$ como la suma corta $w$ el número de representaciones es $d(q)-1$ .

Si $w$ es una potencia de $2$ entonces $q=1$ y por lo tanto no hay representaciones. Si $$w=2^{a_0}p_1^{a_1}p_2^{a_2}\cdots p_k^{a_k},$$ donde el $p_1,p_2,\dots,p_k$ son primos Impares distintos, entonces el número de representaciones no triviales es $$(a_1+1)(a_2+1)\cdots(a_k+1)-1.$$
En particular, si $w$ no es un poder de $2$ hay al menos una representación no trivial.

Añadido : El OP ha excluido ahora la posibilidad de $2$ enteros consecutivos. Como la pregunta original es sobre los números pares $w$ eso no hace ninguna diferencia. Para impar $w$ , simplemente eliminamos $1$ de las representaciones contadas anteriormente.

7voto

user8269 Puntos 46

8? ${}{}{}{}{}{}{}{}{}{}{}{}{}$

4voto

Chris Ballance Puntos 17329

Parece que hay algunas cosas que pueden hacer que una base de datos de Access crezca excesivamente.

  1. El bloqueo de filas se discute en esta pregunta de Stackexchange: La base de datos de MS-Access se hace muy grande durante las inserciones
    Parece que la solución sugerida es desactivar Row-Locking en la base de datos. Esto es algo que se desactiva en la propia base de datos de Access, no a través de ArcGIS. Dicho esto, no estoy seguro de qué efectos, positivos o negativos, esto puede tener relacionados con la interacción de ESRI. Una búsqueda rápida no se encontró nada, por lo que no podría hacer daño a probarlo.

  2. Este artículo técnico de Microsoft analiza Cómo prevenir el Bloat después de usar objetos de acceso a datos (DAO). No estoy seguro del tipo de interfaz que utiliza ESRI para vincularse con la consulta de la base de datos Access y otras operaciones, pero imagino que también están relacionadas con esto.

Creo que esos abordan bastante bien el problema del tamaño. En el tiempo que he estado usando PGDB's y sólo bases de datos de Access en general, he visto mucha fluctuación de tamaño. También ha habido algo que ha crecido mucho mientras los datos que contenían no parecían soportarlo. No parece que haya mucho que se pueda hacer aparte de lo que estos artículos pueden ayudar.

Ahora, a la parte de tu pregunta que tiene muchas más posibilidades, y preguntas.

En realidad, está haciendo dos preguntas diferentes.

  1. ¿Debe aprender más SQL?
  2. ¿Debería aprender a utilizar un RDBMS basado en servidor como PostgreSQL?

Pregunta nº 1 - Definitivamente, diría que sí. Esto se aplicaría independientemente de cómo se plantee la pregunta número 2. Incluso si sigues usando Python y un GDB personal, podrías empezar a mover algunas de tus operaciones del código Python a consultas SQL y pasarlas. Puedes hacer esto usando Arcpy como lo haces ahora, o en combinación con un módulo como pyodbc que le permite interactuar con cualquier número de formatos de bases de datos. Como has dicho en tu pregunta, aprender SQL te da la posibilidad de realizar operaciones de forma mucho más eficiente.

Pregunta nº 2 - Esto, obviamente va a salir del lado del "Sí", también. Es más fácil dar ejemplos concretos de por qué el aprendizaje de un RDBMS le beneficiará.
Aquí hay algunos:

  1. El proceso de instalación y configuración de un verdadero RDBMS como PostgreSQL le obliga a familiarizarse con sus datos y cómo están estructurados. Hay tantos controles potenciales sobre quién tiene acceso, y sobre lo que está permitido, que es necesario poner un poco de pensamiento en sus datos cuando se configura por primera vez, ya que puede ser mucho más difícil de cambiar más tarde.
  2. El hecho de que un RDBMS sea ÁCIDO -cumplimiento es una red de seguridad enorme y yo diría que relativamente oculta, al menos para el usuario lego. Con Access, si una consulta va mal podría corromper toda la tabla, y posiblemente toda la base de datos. Saber que cuando se ejecuta una consulta, si sale mal, no afectará a la integridad de los datos que ya están ahí te da mucha más flexibilidad.
  3. Soporte multiusuario. Incluso si no utiliza SDE o alguna otra capa de abstracción entre su base de datos y el SIG, esto es un gran salto. Un ejemplo personal es sobre la construcción de tablas extendidas de atributos en una base de datos PostgreSQL. Cuando tenía las tablas en MS Access, si alguien las referenciaba en un .mxd No siempre podría editarlos o cambiar su estructura hasta que todos los demás bloqueos de usuario fueran liberados. Con PostgreSQL, puedo ver los datos en ArcGIS al mismo tiempo que actualizo los atributos y modifico la estructura de la tabla a través de la base de datos. Esto me ahorra mucho tiempo. También significa que una vez que tenga otros usuarios que accedan a estos mismos datos, podré hacer otros cambios durante el día sin tener que asegurarme de que todos hayan cerrado sus referencias a la base de datos.
  4. Alejarse de una estructura de datos en silos. Una vez que se centralizan los datos y se permite que todo el mundo pueda acceder a ellos, se reduce la necesidad de que grupos más pequeños tengan sus propias copias de los mismos datos, o la única copia de algunos datos que no están dispuestos a compartir por temor a que se corrompan, etc. Si sabes utilizar un RDBMS puedes asegurarte de que todos los datos tienen una copia de seguridad adecuada, al tiempo que permites diferentes niveles de acceso a los distintos usuarios en función de sus necesidades individuales y organizativas. Además, el uso de una base de datos de este tipo reduce la probabilidad de que se produzca una situación en la que no se puedan extraer datos para compartirlos con otra parte. Esta historia es una ejemplo principal . Tenga en cuenta que el mayor problema en esta situación fue más la incapacidad de utilizar el software para extraer los datos a un formato utilizable que un problema con el almacenamiento de datos en sí. Sin embargo, esto pone de manifiesto el problema de silos de datos .

Mi último comentario se aplica a ambas preguntas, de por qué querrías aprender SQL o PostgreSQL. El hecho simple es que cada uno se convierte en una herramienta más en su pecho para ayudarle a hacer su trabajo. Saber SQL le permite ser capaz de acceder a los datos de una variedad de fuentes y luego realizar muchas operaciones en dichos datos sin la necesidad de software especializado. Conocer PostgreSQL te introduce en una estructura de base de datos mucho más robusta. Ya sea que termines usándolo o una plataforma RDBMS diferente, encontrarás que hay muchas similitudes, por lo que efectivamente estás adquiriendo conocimientos sobre múltiples sistemas. Python, SQL, PostgreSQL y MS Access son todos apropiados en circunstancias particulares, con algún solapamiento. Estar familiarizado con todos ellos te permite aprovechar sus puntos fuertes individuales para agilizar tu flujo de trabajo.

3voto

Idea: Primero encuentra una suma divisible por una potencia correcta de dos, digamos, $2^\ell$ . Esto es una solución modulo $2^{\ell+1}$ . Entonces fija esa solución dentro de su coset.

\=================

Dejemos que $m=2^\ell t$ con $t>1$ un número impar. Entonces la suma de enteros consecutivos $$0+1+\cdots+(2^{\ell+1}-1)=2^{\ell}(2^{\ell+1}-1)$$ tiene $2^{\ell+1}$ términos. Aquí $t+1-2^{\ell+1}$ es un número par, llámalo $2k$ . Si $k\ge0$ , entonces podemos añadir simplemente $k$ a todos los $2^{\ell+1}$ términos en la suma anterior, y hemos encontrado una solución.

Por otro lado, si $k<0$ entonces tenemos que restar $|k|$ de todos esos términos para obtener la suma correcta. Al hacerlo, introducimos algunos números negativos. Estos se cancelarán con sus contrapartes positivas. Porque $t>1$ habrá más de un número restante. Esto se debe a que después de restar $|k|$ de todos los términos, el mayor término $L$ es $L=2^{\ell+1}-1-|k|$ y el término más pequeño $S$ es $S=k<0$ . Los números no cancelados son $|S|+1,|S|+2,\ldots,L$ , por lo que hay $$L-|S|=L+S=2^{\ell+1}-1-2|k|=2^{\ell+1}-1+2k=t$$ de ellos. Como $t>1$ volvemos a tener una presentación no trivial de $m$ como una suma de números enteros positivos consecutivos.

Ejemplo: $m=12$ da $\ell=2,t=3$ . Inicialmente utilice la suma $0+1+2+\cdots+7=28$ con 8 términos. La suma es demasiado grande en 16, así que para arreglarlo tenemos que restar $2$ de todos los términos, y terminamos con $(-2)+(-1)+0+1+2+3+4+5=3+4+5$ .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X