-> Resta de potencias sucesivas | JAVA - SAAT-WEBS

Breaking

CODIGOS

JAVA

-> Resta de potencias sucesivas | JAVA



aprende como verificar si un numero llega a cero restando potencias de dos en java


A continuación  se muestra el código para verificar si un numero llega a cero restando potencias de dos en java.- 

 El código esta comentado por ello recomiendo simplemente copiarlo a tu IDE favorito y aprender viendo como funciona el código.

Problema. -

En el mundo de las matemáticas existe una teoría bastante interesante, esta teoría
dice que un número entero positivo puede ser reducido a cero si se le resta potencias
de 2 de manera sucesiva.
Por ejemplo, si se tiene el número 5463, este se puede reducir a cero restando 8
potencias de 2 de manera sucesiva. A continuación, se ilustra el ejemplo:


2^12= 4096 n=1


5463-4096=1367


2^10=1024 n=2


1367-1024=343


2^8=256 n=3


343-256=87


2^6=64 n=4

 

87-64=23


2^4=16 n=5

 

23-16=7


2^2=4 n=6

 

7-4=3


2^1=2 n=7

 

3-2=1


2^0=1 n=8 en total 8 potencias de 2 de manera sucesiva


1-1=0


Cabe recalcar que no todo número entero positivo puede ser reducido a cero con
potencias de dos, por ejemplo, el número 789 nunca llegara a cero.
Tu tarea es implementar el algoritmo en pseudocodigo para que dado un número
entero positivo diga en cuantas potencias de 2 puede reducirse el número a cero. Si
el número no puede reducirse a cero, entonces debe mostrar un mensaje que diga
“el número nunca llega a cero”.
Ejemplo:
Entrada: 5463
Salida:
“se reduce a cero en 8 potencias de 2”
Ejemplo 2:
Entrada: 789
Salida:
“el número nunca llega a cero”

 CÓDIGO:

//mportamos el Scanner
import java.util.Scanner;
public class restas_Sucesivas
{   
    public static void main(String args[]){
        //iniciallizamos el Scanner
        Scanner sc=new Scanner(System.in);
        System.out.println("Ingrese el numero a reducir");
        //pedimos el numero a reducir por teclado
        double n=sc.nextInt();
        //inicializamos la variable potencia que aumenatara dependiendo el numero
        int potencia =0;
        //sentencia para aumentar als potenciaas
        while(Math.pow(2,potencia+1)<n){
            potencia=potencia+1;
        }
        //inicializamos el contador para saber en cuantas potencias se reducirra
        int contador=0;
        //sentencia para reducir el numero ingresado
        while(potencia>=0){
            contador=contador+1;
            System.out.println(n+  "- 2^"+ potencia+ " = "+ (n - Math.pow(2,potencia)));
            n=n-Math.pow(2,potencia);
            if(potencia>2){
                potencia=potencia-2;
            }else{
                potencia=potencia-1;
            }
        }
        //si llega a cero mostarremos un mensaje si no,no
        if(n==0){
                 System.out.println("Se reduce a 0 en "+ contador+ " potencias de 2");
            }else{
                System.out.println("El numero nuncaa llega a cero");
            }
    }    
}

Uso cookies para darte un mejor servicio.
Mi sitio web utiliza cookies para mejorar tu experiencia. Acepto Leer más
Copied!