Cómo verificar el número dado es múltiplo de 3 sin usar el operador de módulo

Puedo pensar en dos formas. Suponiendo que en su caso, básicamente no se le permite el operador “%”, el primero es esencialmente el operador de módulo que usa solo división y resta int.

Método 1

  def isMultipleOf3 (n):
     return (n - 3 * (n / 3)) == 0

Método 2
Este era un truco inteligente que aprendí sobre múltiplos de 3 cuando era un niño, por lo que esto no se trasladará bien a otros divisores. Cuando sumas los dígitos de cualquier número y los sumas hasta que termines con un solo dígito, si obtienes 3, 6 o 9, sigue siendo un múltiplo de tres 🙂
Esto también se basa en la implementación del operador de módulo simplemente usando multiplicaciones y división.

  def multipleOfthree (n):
	 si n <10:
		 si n == 0 o n == 3 o n == 6 o n == 9:
			 # es múltiplo de 3
			 volver 1
		 más:
			 # No es múltiplo de 3
			 volver 0
	 más:
		 # Suma los dígitos
		 t = n
		 suma = 0
		 mientras t! = 0:
			 suma = suma + t - 10 * (t / 10)
			 t = t / 10
		 return multipleOfthree (suma)

Búsqueda binaria:

  def multipleOf3 (n):
     l = 0
     h = n
     mientras hl> 1:
         m = l + (hl) / 2
         si 3 * m <= n:
             l = m
         más:
             h = m
     retorno 3 * l == n

No es difícil, y solo un poco más caro que usar el módulo: haga una división entera de su número dado por 3, luego tome el cociente resultante y multiplíquelo por 3. Si pero solo si el nuevo producto es el mismo que el número dado original, eso el número dado es un múltiplo de 3.

Tenga en cuenta que esto funciona para todos los enteros, con signo y sin signo, mientras que el operador de módulo en algunos idiomas parece tener definiciones inusuales para dividendos negativos.

Hay muchas maneras:

SI EL NÚMERO ES + VE:
1) siga restando 3 y verifique si se convierte en 0 antes de convertirse en -ve.

2) sigue restando múltiplos de 3 y devuelve verdadero si se convierte en 0. Devuelve falso si se convierte en -2, -1, 0, 1, 2.

3) cambie la base a 3 y vea si su último dígito se convierte en 0.

SI EL NÚMERO ES -VE:
multiplíquelo por -1 y siga los pasos anteriores

Guardar número original

dividir por 3

Convertir el resultado a entero (es decir, deshacerse de la porción decimal)

Multiplica el valor entero por 3

Si el resultado de la multiplicación es igual al número original, entonces el número es divisible por 3.

Si la diferencia entre el recuento de bits establecidos impares (bits establecidos en posiciones impares) e incluso los bits establecidos es múltiplo de 3, entonces es el número.

  Algoritmo: isMutlipleOf3 (n)
 1) Haga n positivo si n es negativo.
 2) Si el número es 0, devuelve 1 
 3) Si el número es 1, devuelve 0
 4) Inicializar: odd_count = 0, even_count = 0
 5) Bucle mientras n! = 0 
     a) Si se establece el bit más a la derecha, incremente el recuento impar.
     b) Desplazamiento a la derecha n por 1 bit
     c) Si se establece el bit más a la derecha, incremente el recuento par.
     d) Desplazamiento a la derecha n por 1 bit 
 6) return isMutlipleOf3 (odd_count - even_count) 

Fuente: Escribir un método eficiente para verificar si un número es múltiplo de 3 – GeeksforGeeks

Convierta a base 3 y verifique si el último dígito es 0.
El número real es divisible por 3 si y solo si el último dígito en la base 3 es 0.
De hecho, esto es cierto para la divisibilidad por cualquier número.

Suma los dígitos del número juntos. Si la suma es divisible por 3, entonces el número es divisible por 3

More Interesting

¿Qué debo hacer para autoaprendizaje de ciencias de la computación con interés en inteligencia artificial y ciencias de la computación teóricas?

¿Cuál es el mejor enfoque para adivinar los diacríticos árabes mediante programación?

¿Cuál es el máximo común divisor de 55 y 75 usando el algoritmo euclidiano?

¿Cómo debo comenzar a aprender sobre estructura de datos y algoritmos?

Inventé un algoritmo de búsqueda de cadenas. ¿Cómo hago para asegurarme de que lleva mi nombre? ¿Es posible patentarlo / copyright o alguna otra cosa? ¿Se pueden proteger los algoritmos?

¿Qué representa un peso en los bordes en un gráfico ponderado en la teoría de gráficos?

¿Qué son las estructuras autorreferenciales?

¿Qué es más importante, aprender múltiples lenguajes de programación o practicar algoritmos?

¿Cuál es el algoritmo para integrar una función usando un programa de computadora?

¿Cuál es el código para dividir una matriz en dos mitades iguales?

¿Cómo resolvemos esta pregunta: Jimmy y NITT WiFi?

En el algoritmo O (n) para encontrar el elemento máximo en una matriz, ¿cuál es el valor esperado del número total de cambios en el valor de una variable que mantiene el máximo sobre el paso de una matriz?

¿Qué tecnología utiliza X ?: ¿Cómo implementan las empresas de análisis (Mixpanel, KISSMetrics, etc.) el análisis de embudos?

Si tuviera los 1 y 0 correctos, ¿podría crear alguna imagen / video posible?

Cómo medir la precisión de un algoritmo de planificación de ruta