Springen naar inhoud

[java] ontbinden in priemfactoren


  • Log in om te kunnen reageren

#1

Lathander

    Lathander


  • >1k berichten
  • 2501 berichten
  • Ervaren gebruiker

Geplaatst op 17 april 2007 - 23:58

Vandaag in oefenzitting Java kom ik een oefening tegen die me vraagt een getal voor te stellen door de vermenigvuldiging van diens priemfactoren.

Een voorbeeld:

60/2=30
30/2=15
15/3=5
5/5=1

dus
60=2*2*3*5

Nu is het me gelukt dat programa te schrijven voor het getal 60 specifiek, maar ik zou het graag kunnen voor alle mogelijke getallen(afgezien van 1 en 0 natuurlijk).

De docent zei dat dit enkel kon met het gebruik van een array, wat we dit jaar niet zien.

Kan iemand me vertellen hoe dit gaat in een Empty Java File? Dus niet in een workspace.

Dit was mijn code:
(die Input inp = new Input(); kan je zien als hetzelfde van in het begin "Import Input" te zetten, alleen anders, het is een commando dat me toelaat waarden in te geven, we hebben er een aparte klasse voor geinstalleerd)

[codebox]public class Oef4_6
{
public static void main(String[] arguments)
{
Input inp = new Input();
int a;
System.out.println("Geef een willekeurig getal in: ");
int x = inp.readInt();
a = x;
int i = 2;
do
{
if (x % i == 0)
{
x /= i;System.out.print(a + " = " +i);
}
else i++;
}
while (x != 1);

}
}[/codebox]

"Invisible Pink Unicorns are beings of great spiritual power. We know this because they are capable of being invisible and pink at the same time. Like all religions, the Faith of the Invisible Pink Unicorns is based upon both logic and faith. We have faith that they are pink; we logically know that they are invisible because we can't see them."


Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 18 april 2007 - 07:30

Zonder input-gebeuren, maar dat kan je zelf wel in "getNumber" stoppen.
public class Test {
	public static void main(String[] args) {		
		int numberToFactor = getNumber();

		System.out.println(numberToFactor + " = " + constructFactorString(numberToFactor));
	}

		private static int getNumber() {
		   return 60;
		}

	private static String constructFactorString(final int number) {
		String response = "";
		
		if (number == 0) {
			return "0";
		}
		
		int numberToFactor = number;
		if (numberToFactor < 0) {
			numberToFactor = -number;
			response = response + "-";
		}
		
		int smallestFactor = getSmallestFactor(numberToFactor);
		response = response + smallestFactor;
		
		int newNumber = numberToFactor/smallestFactor;  
		if (newNumber > 1) {
			response = response + "*" + constructFactorString(newNumber);
		}
		
		return response;
	}

	private static int getSmallestFactor(final int numberToFactor) {
		if (numberToFactor > 1) {
			for (int divisor = 2; divisor < numberToFactor; divisor++) {
				if (divides(divisor, numberToFactor)) {
					return divisor;
				}
			}
		}
		return numberToFactor;
	}

	private static boolean divides(final int divisor, final int number) {	
		return (number % divisor == 0);
	}
}

#3

Lathander

    Lathander


  • >1k berichten
  • 2501 berichten
  • Ervaren gebruiker

Geplaatst op 18 april 2007 - 17:27

Nja, dit geeft gewoon weer wat 60 is. Ik zou willen dat het programma me de optie geeft een getal in te geven en dit getal dan automatisch omzet, welk positief getal dan ook, dat ik ingeef.

"Invisible Pink Unicorns are beings of great spiritual power. We know this because they are capable of being invisible and pink at the same time. Like all religions, the Faith of the Invisible Pink Unicorns is based upon both logic and faith. We have faith that they are pink; we logically know that they are invisible because we can't see them."


#4

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 18 april 2007 - 17:29

ik ben niet bekend met Java, maar ik denk dat je dit moet aanpassen
private static int getNumber() {
		   return 60;
		}
zodanig dat je een getal kan inlezen
EDIT: stond al boven de code

Veranderd door jhnbk, 18 april 2007 - 17:29

Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

#5

Lathander

    Lathander


  • >1k berichten
  • 2501 berichten
  • Ervaren gebruiker

Geplaatst op 18 april 2007 - 17:35

Nu werkt het programma niet meer...

C:\Test.java:3: cannot find symbol
symbol : method getNumber()
location: class Test
int numberToFactor = getNumber();
^
1 error

Process completed.

dat zegt de compiler

dat ^ teken moet onder de "g" van getNumber staan

Veranderd door Evil Lathander, 18 april 2007 - 17:39

"Invisible Pink Unicorns are beings of great spiritual power. We know this because they are capable of being invisible and pink at the same time. Like all religions, the Faith of the Invisible Pink Unicorns is based upon both logic and faith. We have faith that they are pink; we logically know that they are invisible because we can't see them."


#6

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 18 april 2007 - 19:07

Dan vermoed ik dat je de methode niet goed ingevuld hebt. Heb je wel een 'return' statement?

Doe anders een dit voor de getNumber methode (Input is geen standaardklasse dus daarmee kan ik niks, want die heb ik niet):
private static int getNumber() {
		Scanner sc = new Scanner(System.in);
		System.out.print("Enter a number: ");
		int i = sc.nextInt();		
		return i;
	}





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures