Jak napisać program wypisujący potęgi?

0

Witam.
Mógłby mi ktoś pomóc poprawić ten program do wypisywania potęg 2 nie większych niż liczba wprowadzona z klawiatury?

import java.util.Scanner;
public class Potęgi2 {

	public static void main(String[] args) 
	{
		Scanner xxx = new Scanner(System.in);
		System.out.println("Podaj maksymalną wartość: ");
		System.out.println("Maksymalna wartość wynosi: ");
		int maksymalna = xxx.nextInt();
		for(int i = 1; i<=maksymalna; i++);
		{
			
			double potega = Math.pow(2, i);
			System.out.println("Potęgi liczby 2 to: ");
			if(potega<=maksymalna)
			{
				System.out.println(potega);
			}
			
			
			{
				
			}
		}
	}

}

A takie inne pytanie na marginesie, jeśłi ktoś wie. Po co jest 'static' w metodach/funkcji main?

1
  1. Cała ta pętla for do kosza. Bo jak wpiszę ci tam 1000000 to nie chcesz chyba tyle razy iterować? o_O Podpowiem ci że stosując bardzo skomplikowaną funkcję logarytmiczną można policzyć jaki będzie wykładnik potęgi liczby 2 dla zadanej liczby granicznej. Na przykład log2(1024) = 10 bo 210 = 1024.
  2. Bo nie tworzysz obiektu tej klasy więc metoda musi być statyczna żebyś mógł ją wywołać.
0

Głównie to chodziło mi o 3 zadanie z tego: http://www.jkozak.pl/przedmioty/java/zadania2.pdf bo dopiero zaczynam przygodę z javą. Pomyślę nad tym programem jeszcze na pewno

0
import java.util.Scanner;
public class Potegi2 
{
    public static void main(String[] args) 
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("Podaj granice: ");
        int bound = sc.nextInt();
        int power = 1;
        while(power <= bound)
        {
            System.out.println(power);
            power*=2;
        }
    } 
}

Nie używaj polskich liter w nazwach klas, metod i zmiennych.

0
  1. Cała ta pętla for do kosza. Bo jak wpiszę ci tam 1000000 to nie chcesz chyba tyle razy iterować? o_O Podpowiem ci że stosując bardzo skomplikowaną funkcję logarytmiczną można policzyć jaki będzie wykładnik potęgi liczby 2 dla zadanej liczby granicznej. Na przykład log2(1024) = 10 bo 210 = 1024.

Nie trzeba bawić się w logarytmy do takiego prostego zadania. Pomysł użycia pętli jest dobry, tyle, że OP podszedł od tego od d... strony. Intuicja nakazywała raczej, żeby obliczać potęgi dwójki i porównywać. Żeby obliczyć potęgę dwójki można użyć przesunięcia bitowego.

program w Pythonie:

import sys
n = int(sys.stdin.readline())                                                                                       
res = 1
while res <= n:
  print res
  res <<=1

1 użytkowników online, w tym zalogowanych: 0, gości: 1