Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Anzahl der Primfaktoren einer Zahl » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 10 Beiträge
Willinator

Danke für deine Hilfe Daumen hoch

Habe mittlerweile meinen Fehler rausgefunden und weiß jetzt wie ich es wie und in welcher Art ich es am besten abgebe smile Deins hat mir dabei geholfen! Gott
eulerscheZahl

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
#include <iostream>
#include <cstdio>

using namespace std;

int main (int argc, char** argv) {
    if (argc == 1) {
    	cout << "usage: " << argv[0] << " limit" << endl;
    	return 0;
    }
	int n = stoi(argv[1]);
    for (int z=2; z<=n; z++) {
		int i = z;
		int a = 0;
		for (int pf=2; pf<=i; pf++) {
		    while (i%pf == 0) {
		        a++;
		        i/=pf;
	        }
	    }
		printf("%d %d\n", z,a);
	}
    return 0;
}

Kompilieren: g++ --std=c++11 code.c
Aufruf: ./a.out 20 > plot.txt (a.out entsprechend durch deinen Programmnamen ersetzen)
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.
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.
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.
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?
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:


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
//Test
#include <iostream>
#include <cstdio>

int main () {

    int z=2; // Zahl von der ich die Primfaktoren will
    int pf; // Primfaktoren
    int a=0;  //Anzahl der Primfaktoren bzw Schleifendurchläufe
    int i; //Hilfvariable für z
    const int MAX = 300;
    for (z=2; z<=MAX; z++) {

    i = z; 
    for (pf=2; pf<=i; pf++) {
        while (i%pf == 0){  //Zahl durch Primfaktor restlos teilbar?
            a++;  //Anzahl Primfaktoren erhöhen
            i/=pf;
            }
        }    
    std::cout<<z<<"\t"<<a<<std::endl;
    a=0;
    }
    return 0;
}
Willinator

habs noch mal in der codeansicht gemacht großes Grinsen
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.
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....
Es sind weitere Beiträge zu diesem Thema vorhanden. Klicken Sie hier, um sich alle Beiträge anzusehen.