Encuentra a Euler Toty de una gran variedad de números -- ++ campo con mathematics camp codereview Relacionados El problema

Find Euler totient of a large range of numbers


1
vote

problema

Español

( Función totalmente totista )

¿Hay alguna manera de hacerlo más rápido / mejor en la complejidad asintótica?

  int phi (int n) {     if (memo[n]!=-1) return memo[n];     int ans=n, k=n;     for (int p=2; p*p<=n; p++)     {         if (n%p==0)         {             while (n%p==0) n/=p;             ans-=ans/p;         }     }     if (n>1) ans-=ans/n;     memo[k]=ans;     return ans; }   
Original en ingles

(Euler Totient Function)

Is there any way to make it faster/better in asymptotic complexity?

int phi (int n) {     if (memo[n]!=-1) return memo[n];     int ans=n, k=n;     for (int p=2; p*p<=n; p++)     {         if (n%p==0)         {             while (n%p==0) n/=p;             ans-=ans/p;         }     }     if (n>1) ans-=ans/n;     memo[k]=ans;     return ans; } 
     
   
   

Lista de respuestas


Relacionados problema

13  Numérica para un cálculo de teoría de juegos usando la utilidad esperada  ( Numerics for a game theory calculation using expected utility ) 
Estoy tratando de replicar los resultados de Bruce B. de Mesquita (BDM) en la teoría del juego político para la predicción. Sobre la base de dónde se encuentr...

4  Algoritmo más rápido para adaptar la expresión matemática dada  ( Faster algorithm to tailor given mathematical expression ) 
¿Hay una solución más optimizada para resolver el problema declarado? Dada una matriz 'Arr' de 'n' elementos y un número 'M', encuentra el menor índice 'Z' ...

11  Números de colmena - usando goto en C ++  ( Beehive numbers using goto in c ) 
Entiendo que el uso de orca_array.hpp4 en el código C ++ está estrictamente no aconsejado, pero a veces, realmente reduce la cantidad de líneas de código co...

3  Código C ++ para encontrar la distancia entre la línea y el punto  ( C code to find distance between line and point ) 
Así que hice este simple programa que permite a los usuarios construir puntos y líneas y luego devolver la distancia más pequeña entre un punto dado y una lín...

15  Función de sine en C / C ++  ( Sine function in c c ) 
Debido a las restricciones de software, No puedo usar las bibliotecas estándar, cmath , 9988776655544334 , plantillas, en línea o impulso . También estoy u...

4  Verificación computacional de la conjetura de Collatz utilizando OpenCl  ( Computational verification of collatz conjecture using opencl ) 
Esta solicitud de revisión de código sigue mi solicitud anterior Verificación computacional de Collatz Conyecture . A diferencia del programa anterior (que ...

2  Optimización del código para la secuencia A064604  ( Optimizing code for sequence a064604 ) 
Estoy implementando a064604 - oeis para enteros positivos de hasta 10 mil millones. Estoy encontrando a los divisores en $ o ( sqrt n) $. Por lo tanto, ...

3  Análisis de simetría para arreglos atómicos en un cristal  ( Symmetry analysis for atom arrangements in a crystal ) 
Por un tiempo ahora he tenido la intención de publicar un poco de mi código Haskell aquí para que alguien pueda decirme qué partes de la biblioteca de idiomas...

6  Determinar si f (n) = n ^ 2 + 3n + 5 es divisible por 121  ( Determining if fn n2 3n 5 is ever divisible by 121 ) 
Dado el siguiente problema: Se conjeture eso para cualquier $ N & GT; 0 $, $ N ^ 2 + 3n + 5 $ nunca es divisible por 121. Pruebe esta conjetura por ...

13  Plantilla de expresión para calcular la distancia euclidiana  ( Expression template to compute the euclidean distance ) 
Estaba escribiendo un código relacionado con el geometría nuevamente y tuvo un vistazo más de cerca a mi función que se supone que calcula la distancia euclid...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos