# Ganzzahligen Teiler einer Eingabezahl k



## Guest (31. Aug 2008)

Also das Programm soll folgendes leisten

Eingabe einer Zahl k von der TaSTatur wobei die nciht auf einer Prüfung der ganzzahligkerit prüfne soll

und Berechnung und Ausgabe der ganzzahligen Teiler

Hier ist mein Programm


```
class GZT
{
	public static void main(String args[])
	{
		int k;/*Eingabezahl die ganzzahlig ist.*/
		int g;//Teiler//
		int i=1;//Erebniss//
		System.out.println("Geben sie einen ganzzAHLIGEN tEILER  k an");
		k=IO1.einint();//Zahl wird von der TaSTatur eingegeben//
		for(g=1;g<=30;g++)
		{
			i=k/g;
			System.out.println("Ihr ganzzahliges Ergebniss lautet:"+i);
		}
	}	
	
}
```

Hier die Ausgabe für k gleich 50


```
Geben sie einen ganzzAHLIGEN tEILER  k an
50
Ihr ganzzahliges Ergebniss lautet:50
Ihr ganzzahliges Ergebniss lautet:25
Ihr ganzzahliges Ergebniss lautet:16
Ihr ganzzahliges Ergebniss lautet:12
Ihr ganzzahliges Ergebniss lautet:10
Ihr ganzzahliges Ergebniss lautet:8
Ihr ganzzahliges Ergebniss lautet:7
Ihr ganzzahliges Ergebniss lautet:6
Ihr ganzzahliges Ergebniss lautet:5
Ihr ganzzahliges Ergebniss lautet:5
Ihr ganzzahliges Ergebniss lautet:4
Ihr ganzzahliges Ergebniss lautet:4
Ihr ganzzahliges Ergebniss lautet:3
Ihr ganzzahliges Ergebniss lautet:3
Ihr ganzzahliges Ergebniss lautet:3
Ihr ganzzahliges Ergebniss lautet:3
Ihr ganzzahliges Ergebniss lautet:2
Ihr ganzzahliges Ergebniss lautet:2
Ihr ganzzahliges Ergebniss lautet:2
Ihr ganzzahliges Ergebniss lautet:2
Ihr ganzzahliges Ergebniss lautet:2
Ihr ganzzahliges Ergebniss lautet:2
Ihr ganzzahliges Ergebniss lautet:2
Ihr ganzzahliges Ergebniss lautet:2
Ihr ganzzahliges Ergebniss lautet:2
Ihr ganzzahliges Ergebniss lautet:1
Ihr ganzzahliges Ergebniss lautet:1
Ihr ganzzahliges Ergebniss lautet:1
Ihr ganzzahliges Ergebniss lautet:1
Ihr ganzzahliges Ergebniss lautet:1
```

Also ist sozusagen alles richtig?

Oder was könnte ich da noch verbessern?

bitte um vorschläge


----------



## Marco13 (31. Aug 2008)

iCH wrde nioch die een nur eINAL einasgeben....


----------



## 0x7F800000 (31. Aug 2008)

> Also ist sozusagen alles richtig?


Nja, ein paar kleinigkeiten sind mir da schon aufgefallen:

1) DiE ShIFt TaStE KleMmt!11! kAuF dIR eInE NeUe TaSTaTur!11
2) Dieses programm liefert irgendwelchen Müll, der... khem... nichts mit der Aufgabenstellung zu tun hat (aus *DeR auFGabEnstelln* habe ich entziffern können, dass das Programm alle ganzzahligen Teiler zu einer Natürlichen Zahl ausgeben soll) Dein Programm versucht dagegen, 3,4,7 und 8 als Teiler von 50 zu verkaufen^^
3) Es enthält unnötige variablen (wozu ist "i" da?)
4) Zählvariablen initialisiert man direkt in der for() schleife
5) kannst du dich bitte für irgend*eine* art von Kommentaren entscheiden? /* */ wird für was anderes verwendet als // , auch wenn compiler da nicht meckert: dem auge tut's trotzdem weh.

=> Lies dir mal bei wikipedia durch, was ein teiler überhaupt sein soll, und schreib den code neu  :roll:


wenn du damit fertig bist, vergleiche es bitte damit:

```
import java.util.*;
import java.io.*;

public class MathForNaturalNumbers {
	
	/**getDivisors
	 * (the most primitive version, very inefficient)
	 * 
	 * @param n:	a natural number
	 * @return		array with all (not only prime) divisors of n
	 */
	public static long[] getDivisors(long n){
		// a list with divisors of n. List is good because no memory is wasted
		ArrayList<Long> divisorsList=new ArrayList<Long>();
		for(long i=2; i<=n/2; i++) if(i%n==0) divisorsList.add(Long.valueOf(i));
		
		// transform the list to an array
		long[] result=new long[divisorsList.size()];
		int currentIndex=0;
		for(Long divisor:divisorsList) result[currentIndex++]=divisor.longValue();
		
		// return the array
		return result;
	}
	
	/** main
	 * just a test for getDivisors()
	 */
	public static void main(String[] args){
		BufferedReader r=new BufferedReader(new InputStreamReader(System.in));
		long n=1;
		do{
			System.out.println("\n\nTeiler welcher zahl wollen Sie berechnet haben? [0=exit]: ");
			try{
				n=Long.parseLong(r.readLine());
			}catch(Exception e){
				e.printStackTrace();
			}
			
			long[] result=getDivisors(n);
			for(int i=0; i<result.length; i++) System.out.print(result[i]+",");
		}while(n!=0);
	}
}
```
...und erzähl du mir anschließend, wo ich  zwei buchstaben verdreht hab, und wieso es jetzt nicht funktioniert.
Das ist so zu sagen als kleiner Test gedacht. Rummeckern ohne es selbst ausprobiert zu haben finde ich blöd, democode vergammeln lassen finde ich auch blöd, aber fertige lösung liefern wäre ja total blöd, da lernt keiner was


----------



## Gast (1. Sep 2008)

danke

werd eich morgne machen


----------



## 0x7F800000 (1. Sep 2008)

ey, amchts ud sda bsachiltihc?  :autsch:


----------



## Marco13 (1. Sep 2008)

Warhascienlish tha eir diens Arkilriekl übreintreipertirert.... http://www.java-forum.org/de/topic73685_wie-lesen-wir.html


----------



## kannkeinjava (1. Sep 2008)

Habe das Programm umgeändert.

Hier ist das Programm


```
class Teiler
{
	public static void main(String args[])
	{
		int g;/*Teiler*/
		int k;/*Zahl die von der Tastatur eingelesne wird*/
		int i;/* ganzahliges Rest*/
		int e;/*Ergeniss vom Teiler*/
		System.out.println("Bitte geben sie eine Zahl für ");
		k=IO1.einint();/*Zahl wird von der TaSTatur eingegeben*/
      	for(g=1;g<=k;g++)
      	{
      		i=k%g;
      		e=k/g;
      		System.out.println("Für Teiler g:"+g);
      		System.out.println("Ihr Modulo lautet:"+i);
      		System.out.println("Ihr Ergebniss für den Teiler lautet:"+e);
    	}
      	
   }   
   
}
```

Hier die Ergebnisse für einen k=50



F³r Teiler g:1
Ihr Modulo lautet:0
Ihr Ergebniss f³r den Teiler lautet:50
F³r Teiler g:2
Ihr Modulo lautet:0
Ihr Ergebniss f³r den Teiler lautet:25
F³r Teiler g:3
Ihr Modulo lautet:2
Ihr Ergebniss f³r den Teiler lautet:16
F³r Teiler g:4
Ihr Modulo lautet:2
Ihr Ergebniss f³r den Teiler lautet:12
F³r Teiler g:5
Ihr Modulo lautet:0
Ihr Ergebniss f³r den Teiler lautet:10
F³r Teiler g:6
Ihr Modulo lautet:2
Ihr Ergebniss f³r den Teiler lautet:8
F³r Teiler g:7
Ihr Modulo lautet:1
Ihr Ergebniss f³r den Teiler lautet:7
F³r Teiler g:8
Ihr Modulo lautet:2
Ihr Ergebniss f³r den Teiler lautet:6
F³r Teiler g:9
Ihr Modulo lautet:5
Ihr Ergebniss f³r den Teiler lautet:5
F³r Teiler g:10
Ihr Modulo lautet:0
Ihr Ergebniss f³r den Teiler lautet:5
F³r Teiler g:11
Ihr Modulo lautet:6
Ihr Ergebniss f³r den Teiler lautet:4
F³r Teiler g:12
Ihr Modulo lautet:2
Ihr Ergebniss f³r den Teiler lautet:4
F³r Teiler g:13
Ihr Modulo lautet:11
Ihr Ergebniss f³r den Teiler lautet:3
F³r Teiler g:14
Ihr Modulo lautet:8
Ihr Ergebniss f³r den Teiler lautet:3
F³r Teiler g:15
Ihr Modulo lautet:5
Ihr Ergebniss f³r den Teiler lautet:3
F³r Teiler g:16
Ihr Modulo lautet:2
Ihr Ergebniss f³r den Teiler lautet:3
F³r Teiler g:17
Ihr Modulo lautet:16
Ihr Ergebniss f³r den Teiler lautet:2
F³r Teiler g:18
Ihr Modulo lautet:14
Ihr Ergebniss f³r den Teiler lautet:2
F³r Teiler g:19
Ihr Modulo lautet:12
Ihr Ergebniss f³r den Teiler lautet:2
F³r Teiler g:20
Ihr Modulo lautet:10
Ihr Ergebniss f³r den Teiler lautet:2
F³r Teiler g:21
Ihr Modulo lautet:8
Ihr Ergebniss f³r den Teiler lautet:2
F³r Teiler g:22
Ihr Modulo lautet:6
Ihr Ergebniss f³r den Teiler lautet:2
F³r Teiler g:23
Ihr Modulo lautet:4
Ihr Ergebniss f³r den Teiler lautet:2
F³r Teiler g:24
Ihr Modulo lautet:2
Ihr Ergebniss f³r den Teiler lautet:2
F³r Teiler g:25
Ihr Modulo lautet:0
Ihr Ergebniss f³r den Teiler lautet:2
F³r Teiler g:26
Ihr Modulo lautet:24
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:27
Ihr Modulo lautet:23
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:28
Ihr Modulo lautet:22
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:29
Ihr Modulo lautet:21
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:30
Ihr Modulo lautet:20
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:31
Ihr Modulo lautet:19
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:32
Ihr Modulo lautet:18
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:33
Ihr Modulo lautet:17
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:34
Ihr Modulo lautet:16
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:35
Ihr Modulo lautet:15
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:36
Ihr Modulo lautet:14
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:37
Ihr Modulo lautet:13
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:38
Ihr Modulo lautet:12
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:39
Ihr Modulo lautet:11
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:40
Ihr Modulo lautet:10
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:41
Ihr Modulo lautet:9
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:42
Ihr Modulo lautet:8
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:43
Ihr Modulo lautet:7
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:44
Ihr Modulo lautet:6
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:45
Ihr Modulo lautet:5
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:46
Ihr Modulo lautet:4
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:47
Ihr Modulo lautet:3
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:48
Ihr Modulo lautet:2
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:49
Ihr Modulo lautet:1
Ihr Ergebniss f³r den Teiler lautet:1
F³r Teiler g:50
Ihr Modulo lautet:0
Ihr Ergebniss f³r den Teiler lautet:1

hoffe jetzt alles richtig ist


----------



## xysawq (1. Sep 2008)

Ohje... ich glaube du solltest einfach das "Ihr Ergebniss f³r den Teiler lautet:, sowie "Ihr Modulo lautet:" weglassen, und "F³r Teiler g:" in "gültiger ganzzahliger Teiler: " umbenennen und nur dann ausgeben, wenn Modulo==0 ist.

edit: und bitte lass das mit dem /*...*/
einzeilige Kommentare bitte so:

```
int etwasCodeEben; //Kommentar
```
 /*...*/ dann für sowas:

```
/*Die nachfolgenden Zeilen beinhalten Code.
 *
 * Unter anderem welchen, der:
 * -schön anzusehen ist
 * -nichts bringt
 * -und zu lang ist
 */
```


----------



## Der Müde Joe (1. Sep 2008)

habe nicht alles gelesen, aber wenn wir schon dabei sind.

Nimm AUSSAGEKRÄFTIGE Variablennamen...dann erstparst du dir die Kommentare.


```
int g;/*Teiler*/
      int k;/*Zahl die von der Tastatur eingelesne wird*/
      int i;/* ganzahliges Rest*/
      int e;/*Ergeniss vom Teiler*/ 

//wieso nicht gleich

int teiler;
int input;
int moduloRest;
int result;
```


----------



## kannkeinjava (1. Sep 2008)

habe umgeändert und danke für die Infos




```
class Teiler
{
	public static void main(String args[])
	{
		int g;//Teiler//
		int k;//Zahl die von der Tastatur eingelesne wird//
		int i;//ganzahliges Rest//
		int e=1;//Ergeniss vom Teiler//
		System.out.println("Bitte geben sie eine Zahl für ");
		k=IO1.einint();//Zahl wird von der TaSTatur eingegeben//
      	for(g=1;g<=k;g++)
      	{
      		
      		i=k%g;
      		if(i==0)
      		e=k/g;
      		System.out.println("Ihr ganzer gültiger Teiler lasutet: g:"+g);
      		System.out.println("Ihr Ergebniss für den Teiler lautet:"+e);
    	}
      	
   }   
   
}
```

hier die Ergebnisse

Bitte geben sie eine Zahl f³r
30
Ihr ganzer g³ltiger Teiler lasutet: g:1
Ihr Ergebniss f³r den Teiler lautet:30
Ihr ganzer g³ltiger Teiler lasutet: g:2
Ihr Ergebniss f³r den Teiler lautet:15
Ihr ganzer g³ltiger Teiler lasutet: g:3
Ihr Ergebniss f³r den Teiler lautet:10
Ihr ganzer g³ltiger Teiler lasutet: g:4
Ihr Ergebniss f³r den Teiler lautet:10
Ihr ganzer g³ltiger Teiler lasutet: g:5
Ihr Ergebniss f³r den Teiler lautet:6
Ihr ganzer g³ltiger Teiler lasutet: g:6
Ihr Ergebniss f³r den Teiler lautet:5
Ihr ganzer g³ltiger Teiler lasutet: g:7
Ihr Ergebniss f³r den Teiler lautet:5
Ihr ganzer g³ltiger Teiler lasutet: g:8
Ihr Ergebniss f³r den Teiler lautet:5
Ihr ganzer g³ltiger Teiler lasutet: g:9
Ihr Ergebniss f³r den Teiler lautet:5
Ihr ganzer g³ltiger Teiler lasutet: g:10
Ihr Ergebniss f³r den Teiler lautet:3
Ihr ganzer g³ltiger Teiler lasutet: g:11
Ihr Ergebniss f³r den Teiler lautet:3
Ihr ganzer g³ltiger Teiler lasutet: g:12
Ihr Ergebniss f³r den Teiler lautet:3
Ihr ganzer g³ltiger Teiler lasutet: g:13
Ihr Ergebniss f³r den Teiler lautet:3
Ihr ganzer g³ltiger Teiler lasutet: g:14
Ihr Ergebniss f³r den Teiler lautet:3
Ihr ganzer g³ltiger Teiler lasutet: g:15
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:16
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:17
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:18
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:19
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:20
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:21
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:22
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:23
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:24
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:25
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:26
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:27
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:28
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:29
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:30
Ihr Ergebniss f³r den Teiler lautet:1


----------



## kannkeinjava (1. Sep 2008)

Der Müde Joe hat gesagt.:
			
		

> habe nicht alles gelesen, aber wenn wir schon dabei sind.
> 
> Nimm AUSSAGEKRÄFTIGE Variablennamen...dann erstparst du dir die Kommentare.
> 
> ...



danke


----------



## xysawq (1. Sep 2008)

kannkeinjava hat gesagt.:
			
		

> ```
> i=k%g;
> if(i==0)
> e=k/g;
> ...



Äääähm... damit überprüfst du zwar, ob Modulo==0 ist, aber Blödsin kommt trotzdem raus.

Das einzige, was am Ende bei der Zahl 50 dastehen sollte ist:

gültiger ganzzahliger Teiler: 50
gültiger ganzzahliger Teiler: 25
gültiger ganzzahliger Teiler: 10
gültiger ganzzahliger Teiler: 5
gültiger ganzzahliger Teiler: 2
gültiger ganzzahliger Teiler: 1

Mehr nicht, das ist alles.

Bitte passe dein Programm richtig an.


----------



## kannkeinjava (1. Sep 2008)

```
class Teiler
{
	public static void main(String args[])
	{
		int g;//Teiler//
		int k;//Zahl die von der Tastatur eingelesne wird//
		int i;//ganzahliges Rest//
		int e=1;//Ergeniss vom Teiler//
		System.out.println("Bitte geben sie eine Zahl für ");
		k=IO1.einint();//Zahl wird von der TaSTatur eingegeben//
      	for(g=1;g<=k;g++)
      	{
      		
      		i=k%g;
      		if(i==0)
      		{
      			e=k/g;
      			System.out.println("Ihr ganzer gültiger Teiler lasutet: g:"+g);
      			System.out.println("Ihr Ergebniss für den Teiler lautet:"+e);
    		}
    	}	
      	
   }   
   
}
```
Bitte geben sie eine Zahl f³r
50
Ihr ganzer g³ltiger Teiler lasutet: g:1
Ihr Ergebniss f³r den Teiler lautet:50
Ihr ganzer g³ltiger Teiler lasutet: g:2
Ihr Ergebniss f³r den Teiler lautet:25
Ihr ganzer g³ltiger Teiler lasutet: g:5
Ihr Ergebniss f³r den Teiler lautet:10
Ihr ganzer g³ltiger Teiler lasutet: g:10
Ihr Ergebniss f³r den Teiler lautet:5
Ihr ganzer g³ltiger Teiler lasutet: g:25
Ihr Ergebniss f³r den Teiler lautet:2
Ihr ganzer g³ltiger Teiler lasutet: g:50
Ihr Ergebniss f³r den Teiler lautet:1


danke


----------

