Bruch kuerzen in R

Neue Frage »

vogelstrauss Auf diesen Beitrag antworten »
Bruch kuerzen in R
Hallo,

ich hoffe die Frage gehoert hier rein, sie ist ein wenig R spezifisch...
Also, ich habe einen Bruch:
Nach dem kuerzen bekommt man .

Gibt es einen einfachen Weg in R, den Bruch zu kuerzen (eigentlich interessiert mich nur die 27)?

Vielen Dank im Voraus!!
Equester Auf diesen Beitrag antworten »

?!

Du suchst sowohl im Nenner als auch im Zähler nach gemeinsamen Teilern.
Die kannst du dann Streichen :P
Und das nicht nur in R!
Huggy Auf diesen Beitrag antworten »

Vermutlich meint er das Statistikprogramm R. Ich kenne nur den Namen.
Equester Auf diesen Beitrag antworten »

Achso, Danke Dir...erklärt einiges oO
Dann darfst Du mal weitermachen xD
(Obwohl es mir scheint Du es auch nicht kennst/kannst?)
Huggy Auf diesen Beitrag antworten »

Nee, bei R kann ich absolut nicht helfen.
vogelstrauss Auf diesen Beitrag antworten »

Ja, eine Primfaktorzerlegung ginge, dann haette ich

und dann muss ich nur noch kuerzen, was zu kuerzen geht...
Aber: wie mache ich das elegant in R?
Primfaktorzerlegung geht mit dem Paket "schoolmath", nur mit den Mengenoperationen beim "Rausfiltern" aller Zahlen im Nenner, die nicht im Zaehler sind, habe ich so meine Probleme...
Gibt es noch einen anderen Weg, ohne Primfaktorzerlegung?

Gruesse
 
 
vogelstrauss Auf diesen Beitrag antworten »

Ich habe eine Loesung in R, aber die ist ziemlich naiv und lang...
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:
27:
28:
29:
30:
31:
32:
33:
require("schoolmath")
nom <- prime.factor(60)
denom <- prime.factor(135*6)

counter_de <- 1
new_denom <- vector()
for (de in denom){
  if (sum(nom==de)>0){ ##If the number from the denominator is in nominator
    ##find index of de in nominator
    counter_nom <- 0
    new_nom <- vector()
    for (no in nom){
      counter_nom <- counter_nom + 1
      if (no==de){
        break
      }
      ##remove de from nominator
      nom <- nom[-counter_nom]
    }
  }else{
    ##keep de from denom and put it into new vector
    new_denom[counter_de] <- de
    counter_de <- counter_de + 1 
  }
}

##Multiply all numbers in vector to obtain result
result <- 1
for (nd in new_denom){
  result <- result * nd
}


Das muss doch irgendwie eleganter gehen...
vogelstrauss Auf diesen Beitrag antworten »

Mit Euklids Algorithmus geht es ganz einfach!!
code:
1:
2:
3:
4:
5:
6:
nom <- 60
denom <- 135 * 6
gcd <- function(a,b) ifelse (b==0, a, gcd(b, a %% b))
result <- denom/gcd(nom, denom)
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »