Euklid Programmieren

Schnelle objektorientierte, kompilierende Programmiersprache.
swordfish
Beiträge: 5
Registriert: Mo Nov 25, 2013 10:21 am

Euklid Programmieren

Beitrag von swordfish » Mo Nov 25, 2013 10:31 am

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

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Euklid Programmieren

Beitrag von Xin » Mo Nov 25, 2013 11:08 am

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;
}
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Euklid Programmieren

Beitrag von cloidnerux » Mo Nov 25, 2013 11:53 am

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!"
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Euklid Programmieren

Beitrag von Xin » Mo Nov 25, 2013 2:53 pm

Ich bin gespannt, ob wir noch erfahren werden, was swordfish um 14 Uhr abgegeben hat. ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

swordfish
Beiträge: 5
Registriert: Mo Nov 25, 2013 10:21 am

Re: Euklid Programmieren

Beitrag von swordfish » Mo Nov 25, 2013 10:28 pm

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:

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Euklid Programmieren

Beitrag von Xin » Di Nov 26, 2013 1:21 am

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? :->
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

swordfish
Beiträge: 5
Registriert: Mo Nov 25, 2013 10:21 am

Re: Euklid Programmieren

Beitrag von swordfish » Di Nov 26, 2013 1:09 pm

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:

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Euklid Programmieren

Beitrag von cloidnerux » Di Nov 26, 2013 1:30 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Euklid Programmieren

Beitrag von Xin » Di Nov 26, 2013 1:38 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Euklid Programmieren

Beitrag von cloidnerux » Di Nov 26, 2013 1:43 pm

Was studierst Du eigentlich? Und wie lange schon?
Das hat er schon beantwortet:
ich bin am Anfang meines Medieninformatik Studiums
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten