Hallo, ich hab eine recht komplexe Aufgabe erhalten, jedoch stecke ich bereits zu Beginn fest.
Ziel ist es später über einen Floyd Algorithmus eine gewisse Struktur zu erkennen. Dafür benötige ich jedoch vorab gewisse Werte.
Ich muss zuerst nichttriviale Teiler (echte Teiler) ausfindig machen.
Bsp Zahl =9
Über die Primfaktorzerlegung weiß ich, dass
9=3*3
8=2*2*2
7=7
6=2*3
5=5
4=2*2
3=3
2=2
1=1
ergibt. Somit sehe ich zumindest händisch schon, dass die Zahlen 3,9 nicht teilerfremd sind.
Ich muss nun jedoch die Zahlen bekommen, die KEINEN gemeinsamen nichttrivialen Teiler mit n (im Beispiel 9) haben.
Das wären somit die Zahlen 1,2,4,5,7,8
Meine bisherigen Programmierkenntnisse halten sich leider sehr in Grenzen.. Ich habe nun mit Java probiert áber erhalte nicht die 1 und leider erhalte ich zsl immer die 6. Das Problem ist aber dass die 1 keinen gemeinsamen Teiler mit 9 hat (laut Aufgabenstellung) und die 6 einen gemeinsamen Teiler mit 9 hat (Zahl 3) und das so nicht korrekt wäre.
----
Mit diesen Zahlen müsste ich dann im Folgeschritt schauen, ob Differenzen (0~1,0~2,0~3;.......;5~6,5~7,5~8,6~7,6~8,7~8) diese Summen ergeben.
Wenn Sie die Zahlen 1,2,4,5,7,8 ergeben würde man theoretisch eine "Kante" ziehen, ansonsten nicht.
Tabellarisch würde das Beispielsweise so aussehen:
Differenzen:
0~1 =1 ---> Kante
0~2=2 --> Kante
...
interessant wird es dann ab 1:
1~2 =1 ---> Kante
1~3 = 2 ---> Kante
1~4 = 3 ---> keine direkte Verbindung Kante
Wenn ich dies durchgehe, ergibt sich folgende angedeutete Matrix, die ich in den Floys-Algorithmus (wenn möglich) nicht händisch einbauen will.
Mein bisheriger Code ist wie erwähnt noch sehr dünn..ich bin eher der Theoretiker..
[CODE lang="java" title="teilerfremdemenge"]package teilerfremdheit;
public class teilerfremdemenge {
public static void main(String[] args) {
long eingabe1 = 9;
long Teiler;
for(Teiler = 1; Teiler <= eingabe1; Teiler++) {
if(eingabe1%Teiler != 0) {
System.out.println(Teiler);
}
}
}
}[/CODE]
Meine Frage ist also: wie kann ich umgehen, dass die 6 nicht auftaucht und die 1 schon?
Wie kann ich im Folgeschritt die Diferrenzen bilden und so tabellarisch speichern, damit ich es für den Floyd Algorithmus nutzen kann?
Ziel ist es später über einen Floyd Algorithmus eine gewisse Struktur zu erkennen. Dafür benötige ich jedoch vorab gewisse Werte.
Ich muss zuerst nichttriviale Teiler (echte Teiler) ausfindig machen.
Bsp Zahl =9
Über die Primfaktorzerlegung weiß ich, dass
9=3*3
8=2*2*2
7=7
6=2*3
5=5
4=2*2
3=3
2=2
1=1
ergibt. Somit sehe ich zumindest händisch schon, dass die Zahlen 3,9 nicht teilerfremd sind.
Ich muss nun jedoch die Zahlen bekommen, die KEINEN gemeinsamen nichttrivialen Teiler mit n (im Beispiel 9) haben.
Das wären somit die Zahlen 1,2,4,5,7,8
Meine bisherigen Programmierkenntnisse halten sich leider sehr in Grenzen.. Ich habe nun mit Java probiert áber erhalte nicht die 1 und leider erhalte ich zsl immer die 6. Das Problem ist aber dass die 1 keinen gemeinsamen Teiler mit 9 hat (laut Aufgabenstellung) und die 6 einen gemeinsamen Teiler mit 9 hat (Zahl 3) und das so nicht korrekt wäre.
----
Mit diesen Zahlen müsste ich dann im Folgeschritt schauen, ob Differenzen (0~1,0~2,0~3;.......;5~6,5~7,5~8,6~7,6~8,7~8) diese Summen ergeben.
Wenn Sie die Zahlen 1,2,4,5,7,8 ergeben würde man theoretisch eine "Kante" ziehen, ansonsten nicht.
Tabellarisch würde das Beispielsweise so aussehen:
Differenzen:
0~1 =1 ---> Kante
0~2=2 --> Kante
...
interessant wird es dann ab 1:
1~2 =1 ---> Kante
1~3 = 2 ---> Kante
1~4 = 3 ---> keine direkte Verbindung Kante
Wenn ich dies durchgehe, ergibt sich folgende angedeutete Matrix, die ich in den Floys-Algorithmus (wenn möglich) nicht händisch einbauen will.
n=9 / Ecken 0-8 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
0 | 0 | 1 | 1 | 2 | 1 | 1 | 2 | 1 | 1 |
1 | 0 | 1 | 1 | 2 | |||||
2 | 0 | ||||||||
3 | 0 | ||||||||
4 | 0 | ||||||||
5 | 0 | ||||||||
6 | 0 | ||||||||
7 | 0 | ||||||||
8 | 0 |
Mein bisheriger Code ist wie erwähnt noch sehr dünn..ich bin eher der Theoretiker..
[CODE lang="java" title="teilerfremdemenge"]package teilerfremdheit;
public class teilerfremdemenge {
public static void main(String[] args) {
long eingabe1 = 9;
long Teiler;
for(Teiler = 1; Teiler <= eingabe1; Teiler++) {
if(eingabe1%Teiler != 0) {
System.out.println(Teiler);
}
}
}
}[/CODE]
Meine Frage ist also: wie kann ich umgehen, dass die 6 nicht auftaucht und die 1 schon?
Wie kann ich im Folgeschritt die Diferrenzen bilden und so tabellarisch speichern, damit ich es für den Floyd Algorithmus nutzen kann?