Processing math: 100%

13 votos

¿Cuántos números en un rango dado son coprimos a N?

Hay un buen algoritmo para el cálculo de los números de x A B x N coprime? Esto es igual a esta pregunta , excepto para el rango.

La factorización de N es conocido. Yo en realidad necesidad de resolver el problema por solucionado N y muchos rangos, así que creo que me puede marcar todos los múltiplos de factores de N BitSet y simplemente contar lo que queda. Pero hay una mejor solución (o uno para el caso de necesito la respuesta para un solo rango)?

10voto

Oli Puntos 89

Deje f(C) el número de enteros de 1 Cque son relativamente primos a N. Si podemos calcular f(C), el resto es fácil. Dicen que nos están permitiendo AxB. A continuación, nuestra respuesta es f(B)f(A1).

Tenga en cuenta que f(C) C menos el número de enteros en el intervalo de [1,C] que no relativamente primer a N.

Llame a este número g(C). Por lo f(C)=Cg(C). Atacamos el problema de encontrar g(C).

Si N es una fuente primaria de energía pa, es fácil. Los números en el intervalo de [1,C] que no relativamente primer a N son los múltiplos de p. Así g(C)=Cp, dondex, es habitual el "piso" de la función.

Si N tiene la primera energía de la factorización de la paqb donde p q son distintos de los números primos, a continuación, g(C) es el número de enteros en [1,C] que son divisibles por p o q o ambos. Por medio de la Inclusión/Exclusión, obtenemos g(C)=Cp+CqCpq. La razón es que cuando sumamos los dos primeros términos anteriores, estamos contando dos veces todos los múltiplos de pq.

Si N tiene la primera energía de la factorización de la paqbrc, la misma idea básica de las obras. Tenemos g(C)=Cp+Cq+CrCqrCprCpq+Cpqr.

Expresiones similares de trabajo para N que es más complicado en el primer poder de la factorización.

Nota: Dependiendo de los tamaños relativos de A, B, y N, hay accesos directos disponibles, la participación de Euler φ-función. Esto es porque hay φ(N) números primos relativos a N en el intervalo de [kN+1,(k+1)N]. Como usted sabe, el primer poder de la factorización de N, φ(N) está dada por una fórmula simple. Por lo tanto nuestro problema se resuelve si podemos encontrar a f(D)D<N. Para dividiendo C N nos da el número de los "trozos" de forma [kN+1,(k+1)N] hay C. Estos son tratados con el uso de la φ-función, y el resto D es tratado por la Inclusión/Exclusión.

Y además de los hechos matemáticos, uno necesita ideas de programación para producir una solución eficiente.

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