Seite 1 von 4

Euklid Programmieren

Verfasst: Mo Nov 25, 2013 10:31 am
von swordfish
Also, ich benötige dringend eine Antwort:/

Problem;

ich bin am Anfang meines Medieninformatik Studiums und muss bis heute 14:00 ein Programm abgeben.
Ich hab n Mac, und die Programme Textwrangler und Ultra Edit mit denen ich nichts anfangen kann!
Ich stell euch mal die Aufgabenstellung vom Prof. und bitte euch mir zu helfen, am besten falls etwas was ich nur noch kopieren und einfügen brauch (ich weis es ist unhöfflich sowas von euch zu verlangen weil es einfach meine aufgabe wär, aber ich bin jetzt zu spät dran und ihr seid meine letzte hoffnung) danke schon im vorraus


Bereits Euklid konnte beweisen, dass jede naturliche Zahl z
∈ N , z > 1 sich eindeutig als Produkt einer Menge von Primzahlen darstellen l¨asst.

Entwickeln oder recherchieren Sie einen Algorithmus zur Primfaktorzerlegung und codieren Sie Ihren
Algorithmus in C.
So ist bspw. die Primfaktorzerlegung von 6936 das Produkt
2 ∗ 2 ∗ 2 ∗ 3 ∗ 17 ∗ 17.

• Das Programm liest eine Variable ein (genau ein scanf )
s c a n f ( ”%d ” , . . . ) ;

• Das Programm gibt im Normalfall die Primfaktoren untereinander linksbundig aus:
p r i n t f ( ”%d \ n ” , . . . ) ;
(naturlich wiederholt....)

• Primfaktoren die mehrfach enthalten sind werden auch mehrfach (untereinander) ausgegeben. Auch
nach dem letzten Primfaktor kommt ein Zeilenumbruch.

• Das Programm gibt im Falle einer Primzahl keine Primfaktoren sondern den Text ”... ist prim.“
(mit Zeilenumbruch) aus:
p r i n t f ( ”%d i s t p r i m . \ n ” , . . . ) ;

• Das Programm gibt im Fehlerfall (z < 2) den Text ”... kann nicht zerlegt werden.“ (mit Zeilenum-
bruch) aus:
p r i n t f ( ”%d k a n n n i c h t z e r l e g t w e r d e n . \ n ” , . . . ) ;

• Weitere Ein- und Ausgaben durfen nicht erfolgen.

• Das Programm darf keine Felder enthalten, Funktionen sind (zusammen mit erl¨auterten Prototypen)
erlaubt.

DANKE

Re: Euklid Programmieren

Verfasst: Mo Nov 25, 2013 11:08 am
von Xin
swordfish hat geschrieben:und bitte euch mir zu helfen, am besten falls etwas was ich nur noch kopieren und einfügen brauch (ich weis es ist unhöfflich sowas von euch zu verlangen weil es einfach meine aufgabe wär, aber ich bin jetzt zu spät dran und ihr seid meine letzte hoffnung) danke schon im vorraus
Hmm... in dem Fall musst Du Dir die Hoffnung bitte woanders suchen. Du bist kein Auftraggeber, von dem ich einen Job angenommen habe und diese Website dient dazu, Dir programmieren beizubringen, wenn Du das möchtest. Du wirst Diene Aufgabe also selbst machen müssen.
Dein Prof wird Dir die Aufgabe sicherlich nicht erst gestern gegeben haben. Dass Du drei Stunden vor Abgabe kommst, ist daher wohl überarbeitungsbedürftig. In dem Fall lernst Du gerade etwas.

Etwas Quelltext wäre gut, damit kann man Dir eher helfen.
Ich fange mal an...

Code: Alles auswählen

#include <stdio.h>

int main( void )
{
  int zahl;

  printf( "Bitte Zahl eingeben:\n" );
  scanf( "%d", &zahl );

  /* Hier fortsetzen */

  return 0;
}

Re: Euklid Programmieren

Verfasst: Mo Nov 25, 2013 11:53 am
von cloidnerux
Bereits Euklid konnte beweisen, dass jede naturliche Zahl z
∈ N , z > 1 sich eindeutig als Produkt einer Menge von Primzahlen darstellen l¨asst.
Eine Möglichkeit ist, von 1 anfangen hoch zu zählen und zu schauen, ob die Zahl durch die gerade aktuelle Teilbar ist(Modulo). Ist sie Teilbar, den Aktuellen Teiler ausgeben und weitermachen ohne Inkrementierung, natürlich nicht vergessen die Zahl auch zu teilen:
Pseudocode:

Code: Alles auswählen

while i <= zahl
{
   if i == zahl
       //primzahl
    if zahl % i == 0
        ausgeben i
        continue
    i++
}
Edit: Man kann das noch weiter optimieren. i muss man nur bis zahl/2 hochzählen, denn das ist die größtmögliche Zahl, die ein Primfaktor von zahl sein kann, ohne das zahl selber prim ist. Zudem kann man abbrechen, wenn der Rest 1 ist:

Code: Alles auswählen

rest = zahl
i = 2
if zahl < 2
     ausgeben "Ungültig"
while i <= zahl/2
{
    if rest % i == 0
        ausgeben i
        rest /= i
        continue
    i++
}
if rest > 1
     ausgeben "Primzahl!"

Re: Euklid Programmieren

Verfasst: Mo Nov 25, 2013 2:53 pm
von Xin
Ich bin gespannt, ob wir noch erfahren werden, was swordfish um 14 Uhr abgegeben hat. ^^

Re: Euklid Programmieren

Verfasst: Mo Nov 25, 2013 10:28 pm
von swordfish
ja also, erstmal ganz großen dank...
aaaaber, da ich ein echt schlechter student bin hab ich heute erfahren, das es erst bis mittwoch 14:00 ist :D :D :oops:

Re: Euklid Programmieren

Verfasst: Di Nov 26, 2013 1:21 am
von Xin
swordfish hat geschrieben:ja also, erstmal ganz großen dank...
aaaaber, da ich ein echt schlechter student bin hab ich heute erfahren, das es erst bis mittwoch 14:00 ist :D :D :oops:
Also lesen wir Dich Mittwoch gegen 11 Uhr wieder? :->

Re: Euklid Programmieren

Verfasst: Di Nov 26, 2013 1:09 pm
von swordfish
hey, ähmm will zwar nicht ganz dumm wirken aber es klappt einfach nicht^^

was muss ich jetzt alles eingeben, zusammen gefasst

tut mir leid leute ohne witz! :oops:

Re: Euklid Programmieren

Verfasst: Di Nov 26, 2013 1:30 pm
von cloidnerux
hey, ähmm will zwar nicht ganz dumm wirken aber es klappt einfach nicht^^
Wenn du meinen Code ohne Änderung kopiert hast, kann es auch nicht funktionieren, denn es ist Pseudocode, ich wollte nur eine generelle Idee präsentieren, kein lauffähiges Programm.
Sinnvollerweise solltest du deinen Äußerungen in Bezug auf Disfunktionalität immer deinen Sourcode beifügen sowie die Fehlermeldungen deines Compilers.

Generell gesagt bedeutet programmieren nicht das Eingeben irgendwelcher Schlüsselworte, sondern das schreiben eines logisch und syntaktisch korrekten Programmes, dass dir ein gegebenes Problem löst. Solange du dich weigerst, dich mit dem Programm zu beschäftigen, wie es aussieht und was die einzelnen Teile machen, wirst du wohl nur schwer ein lauffähiges Programm erhalten und auch in Zukunft enorme Probleme haben, Programmieraufgaben zu lösen. Es empfiehlt sich immer, programmieren zu verstehen, denn es eröffnet dir viele Möglichkeiten mit Tools wie Matlab, Excel, Bash, Batch, Lua, Python uvm.

Re: Euklid Programmieren

Verfasst: Di Nov 26, 2013 1:38 pm
von Xin
swordfish hat geschrieben:hey, ähmm will zwar nicht ganz dumm wirken aber es klappt einfach nicht^^
Was studierst Du eigentlich? Und wie lange schon?
swordfish hat geschrieben:was muss ich jetzt alles eingeben, zusammen gefasst
Als erstes das Programm, dann musst Du es kompilieren. Wie das geht findest Du im Wiki.

Wenn Du möchtest, dass man dir hilft, solltest Du zunächst beschreiben, was nicht funktioniert.

Re: Euklid Programmieren

Verfasst: Di Nov 26, 2013 1:43 pm
von cloidnerux
Was studierst Du eigentlich? Und wie lange schon?
Das hat er schon beantwortet:
ich bin am Anfang meines Medieninformatik Studiums