TI-Basic: Programme und Tutorials: Querprodukt

Erstellt von: Peter Riedel
Schwierigkeitsgrad: fortgeschritten
Modell: Voyage 200

Querprodukt Bearbeiten

  Querprodukt

Linksassoziativ Bearbeiten

  Ziffern der natürlichen Zahl   werden von links nach rechts ziffernweise multipliziert, sodass man das Querprodukt   von   erhält.

 

Funktion Bearbeiten

:qp(n)
:Func
:  Return Π((mod(n,10^(num(n,1)-i))-mod(n,10^(num(n,1)-i-1)))/10^(num(n,1)-i-1),i,0,num(n,1)-1)
:EndFunc

Programm Bearbeiten

:qp(n)
:Prgm
:EndPrgm

Rechtsassoziativ Bearbeiten

  Ziffern der natürlichen Zahl   werden von rechts nach links ziffernweise multipliziert, sodass man das Querprodukt   von   erhält.

 

Funktion Bearbeiten

:digitpro(n)
:Func
:If n<0 or mod(n,1)≠0 Then
:  return undef
:Return Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,numdigit(n,1)-1)
:EndFunc
:numdigit(n,i)
:Func
:While 10^i≤n
:  i+1→i
:EndWhile
:Return i
:EndFunc

Programm Bearbeiten

:digitpro(n)
:Prgm
:ClrIO
:If n<0 or mod(n,1)≠0 Then
:  Disp "Error: n ∈ N = {0,1,2,...,∞}"
:  Return
:EndIf
:1→i
:While 10^i≤n
:  i+1→i
:EndWhile
:string(n)→n
:1→q
:While i>0
:  expr(mid(n,i,1))→j
:  q*j→q
:  i-1→i
:EndWhile
:string(q)→q
:Disp "digit product: "&q
:EndPrgm

Iteratives Querprodukt Bearbeiten

  Iteratives Querprodukt

Rekursion Bearbeiten

 
 

Funktion Bearbeiten

:muldigrt(n,k)
:Func
:If n<10 Then
:  Return n
:ElseIf Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,k-1)<10 Then
:  Return Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,k-1)
:ElseIf Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,k-1)≥10 Then
:  If (mod(Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,k-1),10^k)-mod(Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,k-1),10^(k-1)))/10^(k-1)≠0 Then
:    Return muldigrt(Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,k-1),k)
:  Else
:    Return muldigrt(Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,k-1),k-1)
:  EndIf
:EndIf
:EndFunc

Programm Bearbeiten

:muldigrt(n)
:Prgm
:ClrIO
:If n<0 or mod(n,1)≠0 Then
:  Disp "Error: n ∈ N = {0,1,2,...,∞}"
:  Return
:EndIf
:0→k
:While n>9
:  1→i
:  While 10^i≤n
:    i+1→i
:  EndWhile
:  string(n)→n
:  1→q
:  While i>0
:    expr(mid(n,i,1))→j
:    q*j→q
:    i-1→i
:  EndWhile
:  k+1→k
:  q→n
:EndWhile
:string(n)→n
:string(k)→k
:Disp "multiplicative digital root: "&n,"multiplicative persistence: "&k
:EndPrgm