Anzahl der Primfaktoren einer Zahl |
16.11.2016, 12:47 | Auf diesen Beitrag antworten » | |||||
Willinator | Anzahl der Primfaktoren einer Zahl Meine Frage: Ich habe an der UNI eine Aufgabe bekommen wo ich nicht weiterkomme diesbezüglich: "Schreiben sie ei Programm, dass für die Zahlen von 2 bis zu einer eingelesenen Zahl n die Zahl ihrer Primfaktoren ermittelt, z.B. hat 60 vier Faktoren. Geben sie das Ergebnis in Tabellenform aus und schreiben sie ein Gnuplot-Steuerprogramm um das Ergebnis graphisch dazustellen." Ich programmiere in C++ und komme da nicht weiter da mein Programm nichts wirklich ausgibt und ich mir eig. sicher bin, dass das in der Art so stimmen sollte, ich aber bestimmt nur eine Zeile falsch habe oder irgendwie eine wichtige Sache vergessen habe. bei meiner Version gibt er mir "7=0" als Ergebnis an... Würde mich über eine Hilfreiche Antwort freuen die mein Problem lösen könnte. PS: Ich sollte möglichst nur Schleifen und Funktionen, hauptsächlich aber nur Schleifen verwenden und keine Strings da wir diese noch nicht an der Uni hatten. Meine Ideen: #include <iostream> #include <cstdio> int main () { std::cout<<"Geben Sie eine Zahl n ein, die größer als 2 ist."<<::std::endl; int z; // Zahlen bis n int pf; // Primfaktoren int a=0; //Anzahl der Primfaktoren bzw Schleifendurchlaeufe int n; //Eingelesene Zahl std::cout<<"Zahl n:"; std::cin>>n; for (z=2; z<=n; z++) { } // i soll Hilfsvariable sein und z in Schleife ersetzen for ( int i, pf=2; pf<=i; pf++) { i = z; while (i%pf == 0){ //Zahl durch Primfaktor restlos teilbar? a++; //Anzahl Primfaktoren erhöhen i/=pf; } } printf("%d %d\n", z,a); return 0; } |
|||||
|
||||||
16.11.2016, 16:44 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | RE: Anzahl der Primfaktoren einer Zahl
|
|||||
16.11.2016, 19:57 | Auf diesen Beitrag antworten » | |||||
Willinator | Gnuplot Danke für deine Antwort! Mit deiner Hilfe habe ich es jetzt gelöst und mit deiner Hilfe mein Programm geschrieben und jetzt funktioniert einwandfrei. Mein jetziges Problem ist jetzt die ganze Sache grafisch in einem Gnuplot darzustellen. (habe mich auch im Internet schon informiert aber ich bekomm es nicht hin...) Danke für weitere Hilfe schon mal im Vorraus! |
|||||
16.11.2016, 20:14 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl |
|
|||||
Anzeige | ||||||
|
||||||
16.11.2016, 20:42 | Auf diesen Beitrag antworten » | |||||
Willinator | danke. jedoch darf ich laut meinem Prof nicht die #include <cstdlib> benutzen da wir die nicht hatten. ich darf nur die zwei anderen verwenden.... |
|||||
16.11.2016, 20:49 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | cstdlib ist nötig, um Systemfunktionen zu verwenden (Zeile 24). Ohne die Zeile würden wir nur eine Datei mit Koordinaten füllen und müssten gnuplot dann selbst noch von außerhalb des Programms aufrufen. Wäre das akzeptabel? Habe noch gnuplot iostream gefunden, aber wenn du cstdlib schon nicht verwenden darfst, scheidet das wohl auch aus. |
|||||
16.11.2016, 21:01 | Auf diesen Beitrag antworten » | |||||
Willinator | habs noch mal in der codeansicht gemacht |
|||||
16.11.2016, 21:08 | Auf diesen Beitrag antworten » | |||||
Willinator | Ich glaube es wäre akzeptabel bin mir aber durch die Aufgabenstellung nicht 100% sicher. Zudem kommt noch hinzu, dass ich hier keine eingelesene Zahl verwende, da sonst der Gnuplot nicht funktioniert ("invalid x axis"). Dabei steht aber ja in der Aufgabenstellung, dass es aber bis zu einer eingelesenen Zahl die Anzahl der Primfaktoren ermitteln soll. Gibt es hierzu vll eine Lösung? Hier mein derzeitiges Programm dazu:
|
|||||
16.11.2016, 21:09 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Code kriegst du mit [code]**hier Code einfügen**[/code]. In deinem Programm kommt gnuplot noch gar nicht zum Zug. Also wie kommst du zu "invalid x axis"? Und wie hängt das mit dem Einlesen einer Zahl zusammen? |
|||||
16.11.2016, 21:16 | Auf diesen Beitrag antworten » | |||||
Willinator | Ich habe das .ccp Programm in eine .dat Datei umgewandelt und dann per Gnuplot "plotten" lassen. Das mit der eingelesen Zahl verhält sich so, das ich eine Zahl als obergrenze festlegen soll bis wohin man alle Primfaktoren angezeigt bekommt und nicht wie es zur zeit ist im Programm an sich eine Obergrenze festgelegt ist. Also man soll eine Zahl als Obergrenze je nach Lust und Laune angeben können ohne Quelltext des Programms zu verändern. Also man öffnet das Programm, dann muss man eine Zahl als Obergrenze angeben (egal welche) und man bekommt alle Primfaktoren bis zu dieser Obergrenze angezeigt und zu dieser Ausgabe soll ein Gnuplot-Steuerprogramm geschrieben werden um es grafisch auszugeben. |
|||||
16.11.2016, 21:24 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Also, ich fasse nochmal zusammen: 1. Du startest das cpp Programm 2. Du gibst eine Obergrenze ein 3. Das cpp Programm gibt dir eine Liste von Punkten (Anzahl der Primfaktoren), die du dann irgendwie (z.B. Pipe) in eine Datei schreibst 4. Du startest gnuplot und plottest diese Liste richtig? Wenn ja: genau das tut mein erstes Programm. Wenn du die Grenze von außerhalb des cpp Porgramms eingeben willst, kannst du einen Kommandozeilenparameter nehmen. |
|||||
16.11.2016, 21:30 | Auf diesen Beitrag antworten » | |||||
Willinator | 1. bin im Terminal und nebenbei ist .cpp im Geany offen 2. ich schreibe ins Terminal: -/datei>datei.dat 3. dann gebe ich ins terminal "gnuplot" ein -> gnuplot geöffnet. 4. Dann schreibe ich in Gnuplot: plot "dateiname".dat und dann wird das ganze als Diagramm angezeigt -> funktioniert aber nicht in der Variante, das ich eine Zahl n einlese. |
|||||
16.11.2016, 21:41 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl |
Kompilieren: g++ --std=c++11 code.c Aufruf: ./a.out 20 > plot.txt (a.out entsprechend durch deinen Programmnamen ersetzen) |
|||||
16.11.2016, 21:53 | Auf diesen Beitrag antworten » | |||||
Willinator | Danke für deine Hilfe Habe mittlerweile meinen Fehler rausgefunden und weiß jetzt wie ich es wie und in welcher Art ich es am besten abgebe Deins hat mir dabei geholfen! |
|